On this basic question, it is clear from a long time ago that the C standard does not specify the number of bytes that the basic type should be, and this is also related to the machine, OS, compiler, such as the 32bits operating system, VC + + compiler under the int type is accounted for 4 bytes , while the TUBORC is 2 bytes.
Therefore, the width of the int,long int,short int may vary depending on the compiler. But there are several ironclad principles (Ansi/iso):
sizeof (short int) <=sizeof (int)
sizeof (int) <=sizeof (long int)
Short int should be at least 16 bits (2 bytes)
A long int should be at least 32 bits.
The following gives the number of bytes for the base data type under the different bits compiler:
16-bit compilers
Char:1 bytes
char* (i.e. pointer variable): 2 bytes
Short Int:2 bytes
Int:2 bytes
Unsigned int:2 bytes
Float:4 bytes
Double:8 bytes
Long:4 bytes
A long long:8 bytes
Unsigned long:4 bytes
32-bit compilers
Char:1 bytes
char* (i.e. pointer variable): 4 bytes (32-bit addressing space is 2^32, which is 32 bit, or 4 bytes. Similarly 64-bit compilers)
Short Int:2 bytes
Int:4 bytes
Unsigned int:4 bytes
Float:4 bytes
Double:8 bytes
Long:4 bytes
A long long:8 bytes
Unsigned long:4 bytes
64-bit compilers
Char:1 bytes
char* (i.e. pointer variable): 8 bytes
Short Int:2 bytes
Int:4 bytes
Unsigned int:4 bytes
Float:4 bytes
Double:8 bytes
Long:8 bytes
A long long:8 bytes
Unsigned long:8 bytes
The number of bytes in the basic data type of C + +
The number of bytes in the basic data type of C + +