Сьогодні я натрапив на цікавий момент в огляді на Code Review . У цій відповіді @Veedrac рекомендує замінити типи змінних розмірів (наприклад, int
та long
) на типи фіксованого розміру, такі як uint64_t
і uint32_t
. Цитування з коментарів цієї відповіді:
Розміри int та long (і, отже, значення, які вони можуть утримувати) залежать від платформи. З іншого боку, int32_t завжди має 32 біти. Використання int просто означає, що ваш код працює по-різному на різних платформах, що, як правило, не те, що ви хочете.
Міркування за стандартом, що не фіксує загальні типи, частково пояснюється тут @supercat. С було написано, що воно переноситься в архітектурах, на відміну від складання, яке зазвичай використовувалося для системного програмування в той час.
Я думаю, що проектний задум був спочатку, щоб кожен тип, крім int, був найменшою річчю, яка може обробляти номери різних розмірів, і що int є найпрактичнішим розміром «загального призначення», який міг би працювати з +/- 32767.
Щодо мене, я завжди використовував int
і не дуже хвилювався за альтернативи. Я завжди думав, що це найбільш тип із найкращою продуктивністю, кінцем історії. Єдине місце, на який я вважав, що фіксована ширина буде корисною - це кодування даних для зберігання даних або для передачі по мережі. Я рідко бачив типи фіксованої ширини в коді, написаному іншими.
Я застряг у 70-х чи насправді є обґрунтуванням використання int
в епоху С99 та поза нею?