История изменений
Исправление LINUX-ORG-RU, (текущая версия) :
char = 1 байт
гарантированно. Далее
char(1)<=short(1 или 2)<=int(2 или 4)<=long(4 или 8)<=long long(4 или 8 (в теории ещё или 4 или 8 или 16))
Часто справедливо char(1) short(2) int(4) long(8)
long long(синоним long)
float = 4 байта
гарантированно IEEE-754
double == 8 байт
гарантированно IEEE-754 (даже на 8 битном микроконтроллере)
Определяется всё на конкретной платформе по типу INT_MIN/INT_MAX/etc
для каждого из типов.
cat /usr/include/limits.h
На твоей целевой машине и это самое важное =)
На всяких risc-v есть железная 128 битная адресация, там есть по сути long long long
или просто uint128_t
его при желании можно и на 64битной системе получить на обычном x86_64.
Гарантия размеров есть для трёх типов, вся остальная гарантия это гарантия того кто больше или равен другому. Ну, а если тебе нужны именно точные размеры то typenameXX_t
к твоим услугам, как это разруливать уже будет задача компилятора.
Исправление LINUX-ORG-RU, :
char = 1 байт
гарантированно. Далее
char(1)<=short(1 или 2)<=int(2 или 4)<=long(4 или 8)<=long long(4 или 8 (в теории ещё или 4 или 8 или 16))
Часто справедливо char(1) short(2) int(4) long(8)
long long(синоним long)
float = 4 байта
гарантированно IEEE-754
double == 8 байт
гарантированно IEEE-754 (даже на 8 битном микроконтроллере)
Определяется всё на конкретной платформе по типу INT_MIN/INT_MAX/etc
для каждого из типов.
cat /usr/include/limits.h
На твоей целевой машине и это самое важное =)
На всяких risc-v есть железная 128 битная адресация, там есть по сути long long long
или просто uint128_t
его при желании можно и на 64битной системе получить на обычном x86_64.
Гарантия размеров есть для трёх типов, вся остальная гарантия это гарантия того кто больше или равен другому. Ну, а если тебе нужны именно точные размеры то typenameXX_t
к твоим услугам.
Исходная версия LINUX-ORG-RU, :
char = 1 байт
гарантированно. Далее
char(1)<=short(1 или 2)<=int(2 или 4)<=long(4 или 8)<=long long(4 или 8)
Часто справедливо char(1) short(2) int(4) long(8)
long long(синоним long)
float = 4 байта
гарантированно IEEE-754
double == 8 байт
гарантированно IEEE-754 (даже на 8 битном микроконтроллере)
Определяется всё на конкретной платформе по типу INT_MIN/INT_MAX/etc
для каждого из типов.
cat /usr/include/limits.h
На твоей целевой машине и это самое важное =)
На всяких risc-v есть железная 128 битная адресация, там есть по сути long long long
или просто uint128_t
его при желании можно и на 64битной системе получить на обычном x86_64.
Гарантия размеров есть для трёх типов, вся остальная гарантия это гарантия того кто больше или равен другому. Ну, а если тебе нужны именно точные размеры то typenameXX_t
к твоим услугам.