Я новичок в C. sizeof(long)
возвращает 8, потому что размер long
составляет 8 байт (4 байта для 32-разрядной ОС).
Но мне интересно, почему sizeof(long long)
тоже равно 8. Разве не должно быть 16?
#include <stdio.h>
#include <stdint.h>
int main() {
printf("%zu\n", sizeof(unsigned long));
printf("%zu\n", sizeof(unsigned long long));
return 0;
}
long
равно 8, аlong long
равно 8. На моей платформеint
равно 8,long
равно 16, аlong long
равно 32. На чьей-то еще платформеint
может быть 2,long
может быть 4, аlong long
8. Это зависит от платформы. Если вам нужен конкретный размер, обратите внимание наstd::int32_t
иstd::int64_t
. - person Eljay   schedule 20.06.2021long
равно 16, аlong long
равно32
?!? Что это за платформа? Я практически никогда не видел системы, в которойlong long
— это что угодно, кроме8
,long
— единственная, которая сильно различается (в некоторых системах4
, в других —8
). (Небольшое примечание: вопрос касается C, поэтому префиксstd::
отсутствует) - person ShadowRanger   schedule 20.06.2021long
составляет 4 байта в Windows и 8 в других местах. Если неясно, Элджей не говорит о реальных платформах, а просто подчеркивает. - person HolyBlackCat   schedule 20.06.2021char
, так что я не собирался это исключать). - person ShadowRanger   schedule 20.06.2021c++
.) - person Eljay   schedule 20.06.2021sizeof
. - person wildplasser   schedule 20.06.2021