Long long это 8 байтов, значит?

Я прочитал ответы на вопрос, почему sizeof(long long) это 8 на большинстве систем, но я все еще не знаю, как интерпретировать их значение.

Одна из приведенных причин заключается в том, что существует много кода, который предполагает, что sizeof(long long) <= sizeof(size_t), В этом есть смысл. Тогда есть все виды взглядов на архитектурные соглашения и бренды, и т. Д. Я даже не хочу вступать в те дебаты об истории соглашения. Есть также причины, учитывая, что long long может быть любого размера в соответствии со стандартом, но я думаю, что это не совсем то, что касается меня.

Я хочу знать, как интерпретировать разницу сейчас между тем фактом, что sizeof(long long) возвращает 8, но это long long на самом деле это 16. Если это следует интерпретировать как исторический остаток, который относится только к sizeof оператор, или есть основной указатель адреса, связанный с этим фактом, так что операции на long long выполняются с шагом 8 байт?

Sizeof (подпись) долго v4: 8
Значение (x на 2147483647) v4: 7fffffff

Размер длинного длинного v5: 8
Значение (x в 9223372036854775807) v5: 7fffffffffffffff

0

Решение

Согласно стандарту, long long составляет не менее 64 бит или, скажем, 8 байтов.

На большинстве машин сегодня он имеет длину 8 байт. sizeof (Кстати, оператор, а не функция) возвращает его размер, вы можете рассчитывать на него. Нет выбора sizeof(long long) является 8 в то время как размер long long является 16,

2

Другие решения

Самый длинный стандартный тип данных составляет 8 байтов (64 бита) в большинстве систем, что long long,


Кроме того, вы можете включить limits.h какая библиотека содержит определенные значения для каждого типа данных и места, которое она занимает в вашей системе.


Небольшое обновление во время того факта, что я столкнулся с некоторым уровнем интереса к long,
Гарантируется, что он имеет длину не менее 32 бит (или 4 байта). Таким образом long int (хотя в этом случае, long скорее модификатор длины).

1

По вопросам рекламы [email protected]