Целые типы в C++
Целые числа в C++ представлены следующими типами:
short, int, long и
long long. Разница между ними - сколько
байтов занимает ячейка в оперативной памяти и какое самое большое
число в нее помещается.
Самым основным типом для чисел является тип int.
На обычном компьютере это 4 байта, около двух
миллиардов в плюс и в минус. Количество, номер
и сумма в разумных пределах туда входят.
Например. число 1500000 помещается, а число
3000000000 больше двух миллиардов -
и в int уже не влазит.
Тип long проблемный, так как для него
размер ячейки зависит от операционной системы.
В Windows это те же 4 байта, что у типа int,
около двух миллиардов в плюс и в минус.
В Linux и macOS чаще 8 байт, около девяти
квинтиллионов в плюс и в минус. Один и тот же
текст на разных компьютерах вмещает в long
разные числа.
Тип long long занимает 8 байт
и в Windows, и в Linux, и в macOS,
около девяти квинтиллионов в плюс и в минус.
Для чисел, которые не помещаются в
int, стоит пользоваться именно этим типом.
Тип short состоит из 2 байтов, около 32 тысяч
в плюс и в минус. Число вроде 40000
в эти 2 байта уже не поместится.
Запишем три числа в подходящие типы и выведем их:
short num1 = 9;
int num2 = 1500000;
long long num3 = 3000000000;
std::cout << num1 << "\n";
std::cout << num2 << "\n";
std::cout << num3 << "\n";
Сведем типы и диапазоны на обычном компьютере:
| Тип | Байты | Диапазон |
|---|---|---|
short
|
2
|
от -32768 до 32767
|
int
|
4
|
от -2147483648 до 2147483647
|
long
|
4 или 8
|
в Windows как int, в Linux и macOS как long long
|
long long
|
8
|
от -9223372036854775808 до 9223372036854775807
|
В каком диапазоне изменяются числа типа short?
В каком диапазоне изменяются числа типа int?
В каком диапазоне изменяются числа типа long?
В каком диапазоне изменяются числа типа long long?
Есть число 40000. Помещается ли оно в диапазон
типа short?
Есть число 100000. Помещается ли оно в диапазон
типа int?
Есть число 2147483648. Помещается ли оно в диапазон
типа int?
Есть число 3000000000. Помещается ли оно в диапазон
типа int?
Есть число 100000000000. Помещается ли оно в диапазон
типа int?
Есть число 100000000000. Помещается ли оно в диапазон
типа long long?
Есть число 9223372036854775808. Помещается ли оно
в диапазон типа long long?