Размер числовых типов не определен в стандарте C ++, хотя минимальные размеры таковы. Чтобы определить, какого размера они на вашей платформе, используйте числовые ограничения
Например, максимальное значение для int можно найти:
std::numeric_limits<int>::max();
Компьютеры не работают в базе 10, что означает, что максимальное значение будет в форме 2 n -1 из-за того, как числа представляют в памяти. Возьмем, к примеру, восемь бит (1 байт)
0100 1000
Самый правый бит (число), установленный в 1, представляет 2 0 , следующий бит 2 1 , затем 2 2 и так далее, пока мы получить самый левый бит, который, если число без знака, представляет 2 7 .
Таким образом, число представляет 2 6 + 2 3 = 64 + 8 = 72, потому что установлены 4-й бит справа и 7-й бит справа налево.
Если мы установим все значения в 1:
11111111
Число теперь (при условии без знака )
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 = 2 8 - 1
И, как мы видим, это максимально возможное значение, которое может быть представлено 8 битами.
На моей машине и int, и long одинаковы, каждый из них способен удерживать от -2 31 до 2 31 - 1. По моему опыту, самый распространенный размер на современном 32-битный настольный компьютер.