Во многих случаях вопрос, который вы задаете, не является правильным, и он должен вызывать беспокойство только тогда, когда вы выполняете много вычислений с целочисленными данными без чрезмерной загрузки или сохранения их в памяти , Это можно проверить только с помощью сравнения конкретной программы.
Для всех других программ правильность и переносимость (в таком порядке) должны вызывать гораздо большее беспокойство. Поэтому вы всегда должны использовать «универсальные» типы и typedef
s, которые C (и, возможно, ваша платформа) предусматривают для специальных целей.
- Любой тип подсчета и индексации
должно быть сделано с
size_t
.
- Различия и относительные положения
должно быть сделано с
ptrdiff_t
.
- Коды ошибок и возврата из стандартного
библиотека или системные вызовы обычно
int
.
- В символьных строках используется
char
или
wchar_t
.
Обычно это типы, которые хорошо вписываются в регистры процессора и для которых компилятор знает, как генерировать эффективный код. Все другие целочисленные типы предназначены для специального назначения и в противном случае их следует избегать. В частности, типы, ширина которых меньше ширины int
, не очень используются для арифметики, поскольку стандарт предусматривает повышение до int
или unsigned
перед любыми операциями.