Сделал бы простой 64-битный int сломает много разумных code?

До недавнего времени я рассматривал решение большинства разработчиков / поставщиков систем оставить простой int 32-битным даже на 64-битных машинах. этакая целесообразная бородавка. С современными типами фиксированного размера C99 ( int32_t и uint32_t и т. Д.) Необходимость в стандартном целочисленном типе каждого размера 8, 16, 32 и 64 в основном отпадает. , и похоже, что int можно было бы с таким же успехом сделать 64-битным.

Однако самое большое реальное следствие размера простого int в C происходит из того факта, что В C по существу нет арифметики для типов меньше, чем int . В частности, если int больше 32-битного, результат любой арифметики для значений uint32_t будет иметь тип signed int , что довольно тревожно.

] Является ли это веской причиной постоянно фиксировать 32-битное значение int в реальных реализациях? Я склоняюсь к тому, чтобы сказать да. Мне кажется, что может быть огромный класс использования uint32_t , которые ломаются, когда int больше 32 бит. Даже применение оператора унарного минуса или побитового дополнения становится опасным, если вы не вернетесь к uint32_t .

Конечно, те же проблемы применимы к uint16_t и uint8_t на текущие реализации, но все, кажется, знают о них и привыкли рассматривать их как типы «меньше, чем int ».

15
задан R.. 30 December 2010 в 01:09
поделиться