Другие языки программирования и технологии
С/С++ зачем нужен простой int, если есть более надежные в диапазоне short, long и long long?
Выделяя память под массив типа unsigned int (он же size_t) гарантирует, что такая программа не будет иметь проблем с выделением под него памяти на целевой платформе.
Zviadi Gvalia
Спасибо большое, вроде становиться понятнее и в какую сторону надо копать))
Чем же short надежнее int?
Zviadi Gvalia
Ничем, но имеет преимущество, так как лишняя память не расходуется впустую))
вы оба ебанулись чтоли совсем? какое нахуй усмотрение компилятора?
@рафаэль@ .
Обычное.
int на 16битных будет = 2 байтам
на 32 = 4 байтам
short - везде 2 байта, long - везде 4
int на 16битных будет = 2 байтам
на 32 = 4 байтам
short - везде 2 байта, long - везде 4
Zviadi Gvalia
Он имеет плавающий размер, как было сказано, в зависимости от архитектуры среды выполнения(компилятора и платформы). Поэтому любой компилятор может по разному выдать тебе размер его и будет абсолютно прав при этом, но при этом минимум и максимум равны значению short.
В стандартах это сказано, например Standart C 9899_1999 (C99), пункт "6.2.5 Types".
A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>).
В стандартах это сказано, например Standart C 9899_1999 (C99), пункт "6.2.5 Types".
A ‘‘plain’’ int object has the natural size suggested by the architecture of the execution environment (large enough to contain any value in the range INT_MIN to INT_MAX as defined in the header <limits.h>).
int обычно не используют в структурах файлов для переносимости (хотя есть такие...) , но его размер равен обычно размеру регистра (были выдуманы всякие архитектуры и с другим представлением адреса, слова и т. п. Например, рядом со словом лежал знак числа, который являлся как бы частью слова) и в int можно положить адрес, но заботясь, сколько он занимает: 32 или 64 бита. (имелось в виду для представления его на экран, а так надо хранить в void*). Хотя для 16 битов надо хранить адрес по-другому.
И, кстати, обычно на процессорах есть оптимизация для работы с "родными" типами, т. е. unsigned int будет считаться быстрее, чем unsigned char и т. п.
Ну собственно, в начале всяких коротких, длинных и длинных-длинных не было.
int обеспечивает в некотором смысле кроссплатформенность. У 32 и 64 битной ос разные ограничения на некоторые значения, а поставить ограничение в, скажем, long будет выглядеть на 64 битной ос как: процессор новый, а песня старая.
И, кстати, обычно на процессорах есть оптимизация для работы с "родными" типами, т. е. unsigned int будет считаться быстрее, чем unsigned char и т. п.
Ну собственно, в начале всяких коротких, длинных и длинных-длинных не было.
int обеспечивает в некотором смысле кроссплатформенность. У 32 и 64 битной ос разные ограничения на некоторые значения, а поставить ограничение в, скажем, long будет выглядеть на 64 битной ос как: процессор новый, а песня старая.
Zviadi Gvalia
Спасибо большое за объяснение.
int определяется компилятором и зависит от разрядности ОС
Если писать short, long, long long то их размер будет определен как 2 4 8 независимо от разрядности ОС.
т. е. int это ты даешь размер на усмотрение компилятору.
вроде так...?)
Если писать short, long, long long то их размер будет определен как 2 4 8 независимо от разрядности ОС.
т. е. int это ты даешь размер на усмотрение компилятору.
вроде так...?)
Zviadi Gvalia
Да, это так.
Но в таком случае нельзя предполагать, что размер больше short, для предотвращения переполнения переменной. В таком случае по идее он просто не надежен и использует лишнюю память, в отличие от явного указания. Вот и интересно, где его использование оправдано может быть.
Но в таком случае нельзя предполагать, что размер больше short, для предотвращения переполнения переменной. В таком случае по идее он просто не надежен и использует лишнюю память, в отличие от явного указания. Вот и интересно, где его использование оправдано может быть.
Похожие вопросы
- Подскажите про создание сайтов! Нужен простой сайт с парой страниц, сколько будет стоить и сколько создание по времени
- Срочно нужен простейший графический редактор на JAVA!!!
- Нужна простая программа на подобе фотошопа (рисование кнопок и меню сайта) Есть что то простое и на русском?
- Нужен простой ЯП как для хобби, так и вспомогательный в работе, что то на замену VBA.
- Нужна простая программа для создания фильма с мелких файлов, может хто-то знает где её скачать? Заранее спасибо!!!
- Нужен простейший счетчик посещений, online посетителей, с помощю MySQL. Или поскажите как написать.
- В чем разница между типами С++ "long" и "int"? Занимают одинаково места, диапазон один и тот же...
- [c++] не работает long int переменная объявленная как long int a; занимает всего 4 байта ((( Что может быть не так?
- Написать реализацию перегруженных функций: int func (int * arr, int length); int func (double * arr, int length);
- Как осуществить операцию сложения в с++ без операции присваивания ? int a=5; int b=6; int c=a+b; ( без "= ")