История изменений
Исправление firkax, (текущая версия) :
Насчёт остальных: char и short это по сути синонимы к int8 и int16. Хотя теоретически где-то они могут увеличить свою битность, но вряд ли это случится (слишком много кода завязано на это). Хотя использовать их вместо явного указания битности причин вроде нет. Хотя, с другой, использовать для строк тип char* как-то красивее чем int8*, а там, где char, там и unsigned char (вместо uint8).
long означает «не меньше 32 бит, но если не сложно (=не требует спец. логики) то поддержим 64». long long = «64 бита и может быть когда-нить больше, если проц нативно поддержит». То есть некоторое автоматическое масштабирование лимитов программы на новые процы. При переходе 32 -> 64 смысл в этом точно есть, дальше - не знаю.
Насчёт int. У него та же роль была при переходе 16->32. Много старого софта автоматом подняло свои лимиты просто перекомпиляцией когда-то. Сейчас же это синоним к int32. С одной стороны, если ты всё ещё думаешь о совместимости с 16-бит архитектурами, то int стоит использовать там, и только там, где прога не сломается от вставки вместо него int16 (это позволит на указанных архитектурах экономить память и такты проца). С другой, если ты про них не думаешь, вопрос несколько теряет смысл ввиду int = int32, и переходит в плоскость стиля кодинга.
PS реквестирую современный подход к шаблонам в printf. Чтобы не %d а %u8, %i32
Я себе кастомный printf сделал с удобными шаблонами, под это в том числе. Хотя они и в дефолтном есть вроде но неудобные.
Исправление firkax, :
Насчёт остальных: char и short это по сути синонимы к int8 и int16. Хотя теоретически где-то они могут увеличить свою битность, но вряд ли это случится. Хотя использовать их вместо явного указания битности причин вроде нет.
long означает «не меньше 32 бит, но если не сложно (=не требует спец. логики) то поддержим 64». long long = «64 бита и может быть когда-нить больше, если проц нативно поддержит». То есть некоторое автоматическое масштабирование лимитов программы на новые процы. При переходе 32 -> 64 смысл в этом точно есть, дальше - не знаю.
Насчёт int. У него та же роль была при переходе 16->32. Много старого софта автоматом подняло свои лимиты просто перекомпиляцией когда-то. Сейчас же это синоним к int32. С одной стороны, если ты всё ещё думаешь о совместимости с 16-бит архитектурами, то int стоит использовать там, и только там, где прога не сломается от вставки вместо него int16 (это позволит на указанных архитектурах экономить память и такты проца). С другой, если ты про них не думаешь, вопрос несколько теряет смысл ввиду int = int32, и переходит в плоскость стиля кодинга.
PS реквестирую современный подход к шаблонам в printf. Чтобы не %d а %u8, %i32
Я себе кастомный printf сделал с удобными шаблонами, под это в том числе. Хотя они и в дефолтном есть вроде но неудобные.
Исправление firkax, :
Насчёт остальных: char и short это по сути синонимы к int8 и int16. Хотя теоретически где-то они могут увеличить свою битность, но вряд ли это случится. Хотя использовать их вместо явного указания битности причин вроде нет.
long означает «не меньше 32 бит, но если не сложно (=не требует спец. логики) то поддержим 64». long long = «64 бита и может быть когда-нить больше, если проц нативно поддержит». То есть некоторое автоматическое масштабирование лимитов программы на новые процы. При переходе 32 -> 64 смысл в этом точно есть, дальше - не знаю.
Насчёт int. У него та же роль была при переходе 16->32. Много старого софта автоматом подняло свои лимиты просто перекомпиляцией когда-то. Сейчас же это синоним к int32. С одной стороны, если ты всё ещё думаешь о совместимости с 16-бит архитектурами, то int стоит использовать там, и только там, где прога не сломается от вставки вместо него int16 (это позволит на указанных арзитектурах экономить память). С другой, если ты про них не думаешь, вопрос несколько теряет смысл ввиду int = int32, и переходит в плоскость стиля кодинга.
PS реквестирую современный подход к шаблонам в printf. Чтобы не %d а %u8, %i32
Я себе кастомный printf сделал с удобными шаблонами, под это в том числе. Хотя они и в дефолтном есть вроде но неудобные.
Исходная версия firkax, :
Насчёт остальных: char и short это по сути синонимы к int8 и int16. Хотя теоретически где-то они могут увеличить свою битность, но вряд ли это случится. Хотя использовать их вместо явного указания битности причин вроде нет.
long означает «не меньше 32 бит, но если не сложно (=не требует спец. логики) то поддержим 64». long long = «64 бита и может быть когда-нить больше, если проц нативно поддержит». То есть некоторое автоматическое масштабирование лимитов программы на новые процы. При переходе 32 -> 64 смысл в этом точно есть, дальше - не знаю.
Насчёт int. У него та же роль была при переходе 16->32. Много старого софта автоматом подняло свои лимиты просто перекомпиляцией когда-то. Сейчас же это синоним к int32. С одной стороны, если ты всё ещё думаешь о совместимости с 16-бит архитектурами, то int стоит использовать там, и только там, где прога не сломается от вставки вместо него int16 (это позволит на указанных арзитектурах экономить память). С другой, если ты про них не думаешь, вопрос несколько теряет смысл ввиду int = int32, и переходит в плоскость стиля кодинга.