Предположим, я хочу написать минимальный стандартный компилятор , и я дошел до того, что мне нужно реализовать интегральные типы. Правильно ли я предполагаю, что я могу минимизировать размеры интегральных типов в соответствии с этой таблицей?Минимальные размеры для интегральных типов
char
: стандартные мандаты sizeof(char)
всегда 1. Поэтому 1 байт.
short
: должно быть не менее 2 байт. Поэтому 2 байта.
int
: должно быть не меньше short
. Поэтому 2 байта.
long
: должно быть не меньше int
. Поэтому 2 байта.
long long
: должно быть длиннее long
. Поэтому 17 бит (т. Е. -65536 до +65535), если я реализую два комплимента: I думаю это выбор, который я могу сделать).
bool
: стандарт не определяет размер. Поэтому 1 бит.
Я знаю, что мне не нужно поддерживать std::int64_t
и его двоюродный брат без знака. Нужно ли мне поддерживать std::int32_t
или это усмотрение компилятора?
О выглядеть ад ++. –
+1 - черт возьми - я знаю, но это больше, чем детское любопытство: я строю сериализатор, и я мог бы понять, что нижние границы теоретические. –
http://en.wikipedia.org/wiki/C_data_types - вы совсем не согласны с требованиями (связанная страница предназначена для C, но относится к C++). – Mat