NT писал(а):Source of the post Но согласитесь, дико звучит, что разработчики софта анархисты и один из базовых типов у них на определен.
Хотелось бы найти точный стандарт языка, жаба давит 30$ платить. :whistle:
Я немного порылся в драфте, но не нашел вообще упоминания о диапазонах типов.
Вот из 3.9.1.
There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long
long int”. In this list, each type provides at least as much storage as those preceding it in the list.
Кто найдет больше - ткните
В стандарт C не лазил.
У Страуструпа нашел уже упоминавшееся мною неравенство размеров и, да - для char - не менее 8 бит, short - не менее 16 бит и long - не менее 32 бит. Про int ничего не говорит.
Упоминает, что есть реализации с 32-битным char...
Ага, имеет место в драфте стандарта C от 2011 года:
5.2.4.2.1 Sizes of integer types <limits.h>
1 The values given below shall be replaced by constant expressions suitable for use in #if
preprocessing directives. Moreover, except for CHAR_BIT and MB_LEN_MAX, the
following shall be replaced by expressions that have the same type as would an
expression that is an object of the corresponding type converted according to the integer
promotions. Their
implementation-defined values shall be equal or greater in magnitude(absolute value) to those shown, with the same sign.
...
— number of bits for smallest object that is not a bit-field (byte)
CHAR_BIT 8
— minimum value for an object of type short int
SHRT_MIN -32767 // −(215 − 1)
— maximum value for an object of type short int
SHRT_MAX +32767 // 215 − 1
— minimum value for an object of type int
INT_MIN -32767 // −(215 − 1)
— maximum value for an object of type int
INT_MAX +32767 // 215 − 1
LONG_MIN -2147483647 // −(231 − 1)
— maximum value for an object of type long int
LONG_MAX +2147483647 // 231 − 1
— maximum value for an object of type unsigned long int
Так что - "ты и я - мы оба правы..."