Это зависит в первую очередь от компилятора.Например, если у вас 64-разрядный процессор x86, вы можете использовать старый 16-разрядный компилятор и получить 16-разрядные целочисленные значения, 32-разрядный компилятор и получить 32-разрядные целые числа, или 64-разрядный компилятор и получить 64-bit ints.
Это зависит от процессора в той степени, в которой компилятор нацелен на конкретный процессор, и (например) древний 16-битный процессор просто не будет запускать код, нацеленный на новый блестящий 64-битовый процессор.
Стандарты C и C ++ действительно гарантируют некоторый минимальный размер (косвенно путем указания минимальных поддерживаемых диапазонов):
char: 8 bits
short: 16 bits
long: 32 bits
long long: 64 bits
Также гарантируется, что размеры / диапазоны строго не уменьшаютсяв следующем порядке: char, short, int, long и long long 1 .
1 long указывается в C99 и C ++ 0x, нонекоторые компиляторы (например, gcc, Intel, Comeau) также допускают это в коде C ++ 03.Если вы хотите, вы можете убедить большинство (если не все) отклонить long long
в коде C ++ 03.