Здравствуйте, Shmj, Вы писали:
S>int может быть как 2 так и 4 байта. Причем на 32 и 64 битных системах он по 4 байта один хрен — т.е. для хранения адреса его нельзя использовать.
А Земля имеет форму чемодана.
P.S. Это такой особый талант — уметь задать один вопрос и напичкать его дюжиной ложных неявных умолчаний, так, что читаешь и даже теряешься, как на эту херь отвечать.
Здравствуйте, rg45, Вы писали:
S>>int может быть как 2 так и 4 байта. Причем на 32 и 64 битных системах он по 4 байта один хрен — т.е. для хранения адреса его нельзя использовать. R>А Земля имеет форму чемодана.
Здравствуйте, Shmj, Вы писали:
S>Вопрос у меня такой.
S>int может быть как 2 так и 4 байта. Причем на 32 и 64 битных системах он по 4 байта один хрен — т.е. для хранения адреса его нельзя использовать.
S>Для хранения данных — тоже лучше не привыкать — ведь что за тип ненадежный.
S>Зачем же он нужон?
.. призрачно все в этом мире бушующем.
Правило простое — если нужно 4 байта — значит надо юзать int32_t, если нужно 8 байт — значит надо юзать int64_t
А вот если нужен N байт — то int, а если M — то long, а если R — то long long. А если один байт — то char.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Shmj, Вы писали:
S>int может быть как 2 так и 4 байта. Причем на 32 и 64 битных системах он по 4 байта один хрен — т.е. для хранения адреса его нельзя использовать.
S>Для хранения данных — тоже лучше не привыкать — ведь что за тип ненадежный.
S>Зачем же он нужон?
А какие ваши предложения?
UPD int на любой системе не меньше 16ти бит. Даже на самых убогих 8ми-битных системах он будет как минимум 16 бит, пусть и с ухудшением производительности. На 16ти-битных системах он также будет не меньше 16ти бит. На 32х-битных системах он будет 32 бита. Для любой целой переменной int-а обычно будет достаточно на целевой платформе с учетом её — платформы, возможностей. А компилятор сам выберет фактический размер переменной.
Если тебе нужно с гарантией, то в плюсах есть int_leastXX_t, может в сишечку тоже завезли что-то такое. Хочется гарантий — использую такие типы. А int — он исторический, как минимум, если его отменить — весь современный мир рухнет.
Да, кстати, все эти intXX_t/int_leastXX_t и прочие обычно определяются при помощи char/short/int/long/long long через #ifdef для каждой платформы
Здравствуйте, Shmj, Вы писали:
S>>Fixed width integer types
S>Вопрос у меня не в этом. Если нужно 4 байта — то можно заюзать long (int), который ровно 4 байта вне зависимости от системы.
Вот тут уже у тебя косяк с кругозором, на пингвинных 64-битных системах long вполне себе 64 бита
Здравствуйте, Shmj, Вы писали:
S>>>int может быть как 2 так и 4 байта. Причем на 32 и 64 битных системах он по 4 байта один хрен — т.е. для хранения адреса его нельзя использовать. R>>А Земля имеет форму чемодана.
S>А конкретно.
А зачем в интах хранить адреса? Храни в интах просто целые значения, а для адресов используй, внезапно, указатели
Здравствуйте, rg45, Вы писали:
R>P.S. Это такой особый талант — уметь задать один вопрос и напичкать его дюжиной ложных неявных умолчаний, так, что читаешь и даже теряешься, как на эту херь отвечать.
Один дурак задаст столько вопросов, что сто мудрецов не ответят.
Заметьте, это мысль гораздо старше меня, т.е. явление так-то не новое
Здравствуйте, Shmj, Вы писали:
S>int может быть как 2 так и 4 байта. Причем на 32 и 64 битных системах он по 4 байта один хрен - S>т.е. для хранения адреса его нельзя использовать.
Для хранения адреса можно использовать intptr_t/uintptr_t.
А лучше использовать сами указатели.
S>Для хранения данных — тоже лучше не привыкать — ведь что за тип ненадежный. S>Зачем же он нужон?
Всё просто. int — это целый тип неопределенного размера, но он будет обрабатываться максимально быстро на каждой платформе.
Если тебе нужны целые определенного размера — используй int8_t ... int64_t.