What does the C++ standard say about the size of int and long?

What does the C++ standard say about the size of int and long?

Answer: The C++ standard specifies the minimum size requirement for data types, but the exact size of data types like int and long can depend on the platform and architecture.

The size and ranges of integer types like int and long are not fixed, but they have to follow the minimum requirements set by C++ standards. Int size must be at least 2 bytes, and long must be at least 4 bytes. However, these sizes can vary depending on the platform and architecture. By using the sizeof operator and constants from <climits> the specific range and size can be determined. In this article, let’s check out the in-depth explanation of C++ standards.

Table of Contents:

C++ Standard Details

Details of the Standard C++ According to ISO/IEC 14882:2017, there are specific sections and requirements regarding types of integers and long, which must be clarified. The requirements are:

  • Int must be 2 bytes
  • Long must be 4bytes

1. Size of Int in C++ Standard

The size of an integer is implementation-dependent, generally 2 bytes (16 bits) on some systems, with a range of -32,768 to 32,767 for signed 16-bit integers, but on most modern systems, platforms, compilers, and target architectures, it is typically 4 bytes.

Example:

Cpp

Output:

Explanation: Here,we can see how sizeof(int) gives out the size of int, and other constant variables such as INT_MIN and INT_MAX defined in <climits> header display the minimal value and maximal value, respectively.

2. Size of Long in C++ Standard

The size of a long type typically stores signed integers of 4 bytes on 32-bit architecture, i.e., from -2147483648 to 2147483647 for 32-bit, and in 64-bit systems, the long type generally uses 8 bytes, with a range from -9223372036854775808 up to 9223372036854775807.

Example:

Cpp

Output:

Explanation: This code demonstrates how long integers are represented on 32-bit and 64-bit systems by displaying example values. It also prints a smaller long integer to illustrate its representation.

Note: The size ofthe long can vary based on the platform and compiler.

Data Type Sizes and Ranges in C++

The data type sizes and ranges are platform-dependent in C++, but the standard defines minimum sizes for datatypes like int and long types. Knowing the ranges helps in the effective usage of memory and prevents overflow or underflow errors.

Size of int4 bytes
Size of long4 bytes
Size of long long8 bytes
Size of short2 bytes
Minimum value of int-2147483648
Maximum value of int2147483647
Minimum value of long-9223372036854775808
Maximum value of long9223372036854775807
Minimum value of long-long-9223372036854775808
Maximum value of long-long9223372036854775807
Minimum value of short-32768
Maximum value of short 32767

Platform-specific Variations for Int and Long

In C++, the sizes of int and long depend on the system’s architecture, the compiler you’re using, and the target platform. This means that their sizes can change based on where and how you use them.

  1. Size of int: An int in C++ is guaranteed to be at least 16 bits (2 bytes). Depending on your system, it can be 16, 32, or 64 bits, but most modern systems use 32 bits.
  2. Size of long: A long in C++ is guaranteed to be at least 32 bits (4 bytes). On most platforms, it’s 32 bits on 32-bit systems and 64 bits on 64-bit systems. However, there can be exceptions depending on the architecture or compiler you’re using.
  3. Platform-specific differences: On a 32-bit platform, both int and long are usually 32 bits. On a 64-bit platform, int is generally 32 bits for compatibility, but long might be 64 bits on Unix-like systems (like Linux and macOS). However, on Windows, long is still 32 bits even on 64-bit systems.

Conclusion

The sizes and ranges of the fundamental integer types, such as `int` and `long,` are not fixed but largely depend on certain minimum requirements provided in the C++ standard. However, it is possible to evaluate the specific size and values assigned to the different data types using the `sizeof` operator along with some of the pre-defined constants in the `<climits>` header.

FAQs

1. What does the C++ standard specify about the size of int?

The C++ standard does not define the exact size of int. It guarantees that the size of int will be at least 2 bytes (16 bits).

2. What does the C++ standard specify about the size of the long?

The C++ standard guarantees that long will be at least as large as int, and typically it is 4 bytes (32 bits) or more, depending on the platform.

3. Can the size of int and long vary across different platforms?

Yes, the size of int and long can vary depending on the architecture (e.g., 32-bit vs. 64-bit) and the compiler being used.

4. Why is the size of int and long not fixed in C++?

The size of int and long is not fixed in C++ because these sizes can vary depending on the platform and architecture.

5. Are the sizes of int and long platform-dependent?

Yes, the sizes of int and long are platform-dependent. The C++ standard specifies the minimum sizes for datatypes, so they can vary based on the target architecture.

About the Author

Technical Research Analyst - Full Stack Development

Kislay is a Technical Research Analyst and Full Stack Developer with expertise in crafting Mobile applications from inception to deployment. Proficient in Android development, IOS development, HTML, CSS, JavaScript, React, Angular, MySQL, and MongoDB, he’s committed to enhancing user experiences through intuitive websites and advanced mobile applications.

Full Stack Developer Course Banner