Разница между long int и long long int в C/C++

Опубликовано: 4 Сентября, 2022

Все переменные используют тип данных во время объявлений, чтобы ограничить тип сохраняемых данных. Таким образом, мы можем сказать, что типы данных используются для того, чтобы указать переменным тип данных, которые они могут хранить. Всякий раз, когда переменная определяется в C++, компилятор выделяет часть памяти для этой переменной в зависимости от типа данных, с которым она объявлена. Разные типы данных требуют разного объема памяти.

Integer: ключевое слово, используемое для целочисленных типов данных, — int. Целые числа обычно требуют 4 байта памяти и находятся в диапазоне от -2147483648 до 2147483647 .

Модификаторы типов данных: как следует из названия, модификаторы типов данных используются со встроенными типами данных для изменения длины данных, которые может содержать конкретный тип данных.

Ниже приведен список диапазонов вместе с требованиями к памяти и спецификаторами формата для 32-разрядного компилятора GCC.

С. Нет.

Тип данных

Память

(байты)

Диапазон

1 инт 4 -2^31 до 2^31- 1
2 Длинный интервал 4 -2^31 до 2^31 – 1
3 Длинный длинный инт 8 -2^63 до 2^63 – 1

Long long занимает двойную память по сравнению с long. Но он также может быть разным в разных системах. Его диапазон зависит от типа приложения. Гарантированные минимальные используемые битовые размеры для различных типов данных:

  • символ: 8
  • коротко: 16
  • интервал: 16
  • длинный: 32
  • длинный длинный: 64

В порядке убывания: long long >=long>=int>=short>=char

Программа 1:

В различных конкурентных платформах кодирования ограничения составляют от 10 7 до 10 18 . Ниже приведена программа для понимания концепции:

Как и выше, вывод неверен, так как int не может хранить значение 10 10 (вне его диапазона). В этом случае следует использовать long long.

Программа 2:

Ниже приведена программа на C++, демонстрирующая, как преобразование int в long long влияет на вывод:

Объяснение: Приведенная выше программа выдает тот же результат даже после преобразования int в long long int, потому что сначала результат объявляется как long long. Но до присвоения значения умножения p и q он уже переполнен. Теперь, чтобы предотвратить условие переполнения, требуется преобразовать результат int в long long int перед присвоением значения результата, чтобы не возникло условие переполнения.

Программа 3:

Ниже приведена программа на C++ для реализации описанного выше подхода:

Объяснение: после этого он выдает правильный вывод, который равен 10 10 , который можно легко сохранить в типе данных long long, поскольку диапазон составляет до 10 18 .