LINUX.ORG.RU

В каком случае long = int?


0

0

Сегодня обнаружил, что LONG_MAX = INT_MAX
Размер int вроде зависит от системы, да?
Ещё нашёл в гугле, что тип long не надо использовать, если нужна portability.
Есть такой тип long long, но и его не советуют использовать. Зачем тогда его создали спрашивается?

Прям не знаю, совсем в угол загнали. Как правильно?

★★★★

Правильно использовать <sys/types.h> uint32_t uint16_t uint64_t ... Это если ты работаешь с бинарными данными например. Если по барабану - то используй инт. Скорее всего он будет быстрее всего на данной архитектуре. Если нужны максимальные границы - то long long.

bd
()
Ответ на: комментарий от bd

2bd:

Типы uint32_t uint16_t uint64_t определены в C99, поэтому я бы не стал использовать их в портабильных программах.

Die-Hard ★★★★★
()

2Selecter:

На большинстве 32битных систем long = int. Использование long никак не повредит portability, если не закладываться на то, что long больше, чем int. Тип long long стандартизован в C99, но многие старые компиляторы его поддерживают как расширение стандарта; если нужна портабильность, то лучше его не использовать.

"Достаточно портабильно" считать, что в int'е не меньше 16 бит, а в long'е не меньше 32 бит, но, конечно, найдется куча систем, где это не так.

Die-Hard ★★★★★
()

>Сегодня обнаружил, что LONG_MAX = INT_MAX

verno, tak i est'

PS na PC

golodranez ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.