Просто небольшой вопрос: сегодня я вернулся к значению, которое могут иметь типы переменных, и я задавался вопросом, всегда ли короткий или длинный int всегда короткий или длинный, например, подписанный или неподписанный!
int i ; //short or long ?
Ответ "ни один". int
без модификатора int
, short int
не больше int
и может быть одного размера. long int
не меньше, чем int
, но может быть одного размера. Все это соответствует стандарту C++, который также говорит, что short
должен быть не менее 16 бит, а long
должен быть не менее 32 бит. Но вполне возможно иметь машину, где все 32 или 64 бита.
int
гарантированно имеет по крайней мере 16 бит, что охватывает этот диапазон, но в большинстве современных систем значение int
составляет 32 бита. Это также может быть 36, 48 или 64 бита. Если у вас есть конкретные требования, чтобы ваши переменные имели определенный диапазон, то использование typedef
s, которые определяют типы битов X (или «не меньше X»), является хорошей идеей. Существует cstdint
и stdint.h
(для C ++ и C соответственно), которые определяют ряд типов, таких как uint32_t
и uint_least32_t
для этой цели. Если вам все равно, используйте int
.
ни. это целочисленный тип.
Нет. int
- отличный от short
и long
. short
, int
и long
могут иметь 3 разных размера. (Также обратите внимание, что обычно вместо изменения int
как short int
или long int
обычно предпочитают просто писать short
или long
.)
Это тоже. На многих системах, включая обычные Linux, int будет 32 бита, короткий будет 16 и длинным 64. Однако это не гарантируется языком C - типы нужно заказывать по размеру, t должны быть такими конкретными размерами (например, int может быть 64 бит в некоторых системах или 16).
Если не указано, int всегда подписывается.
Просто знать, короткий - 16 бит, длинный 32 бита, а int - 16 или 32 бита в зависимости от компилятора. Если не указано, все они подписаны по умолчанию.
short
- не менее 16 бит, int
- не менее 16 бит, long
- не менее 32 бит. Кроме того, sizeof(short) <= sizeof(int)
и sizeof(int) <= sizeof(long)
.