Я прочитал ответы на вопрос, почему 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
Согласно стандарту, long long
составляет не менее 64 бит или, скажем, 8 байтов.
На большинстве машин сегодня он имеет длину 8 байт. sizeof
(Кстати, оператор, а не функция) возвращает его размер, вы можете рассчитывать на него. Нет выбора sizeof(long long)
является 8
в то время как размер long long
является 16
,
Самый длинный стандартный тип данных составляет 8 байтов (64 бита) в большинстве систем, что long long
,
Кроме того, вы можете включить limits.h
какая библиотека содержит определенные значения для каждого типа данных и места, которое она занимает в вашей системе.
Небольшое обновление во время того факта, что я столкнулся с некоторым уровнем интереса к long
,
Гарантируется, что он имеет длину не менее 32 бит (или 4 байта). Таким образом long int
(хотя в этом случае, long
скорее модификатор длины).