stdint.h в C99 предоставляет множество опций для целочисленных размеров, типов и диапазонов - так много, что я не знаю, какие выбрать!
Я знаю , как использовать size_t
и ptrdiff_t
, когда это уместно, и я использую фиксированные размеры для хранения и передачи. Мой вопрос касается значений, которые будут храниться только в памяти хост-машины.
Например, структура изображения может содержать следующие элементы:
struct image {
integer width, height; /* pixel dimensions of the image */
integer bits_per_pixel;
...
};
Если width
и height
никогда не превысят SHRT_MAX
, следует ли использовать short
или придерживаться int
? Изображение не может иметь отрицательную ширину или высоту, поэтому используйте тип без знака? Возможно (u)int_least16_t
- это правильный выбор? Что-то еще?
Если bits_per_pixel
никогда не превысит значение 64, используйте char
, unsigned char
, uint8_t
, int
или что-то еще?
Что бы вы использовали в этом примере и почему?
Как архитектура процессора, на которой будет выполняться код, влияет на выбор? то есть PPC или x86, 32 или 64 бит.
Как устройство, на котором будет работать код, влияет на выбор? т.е. рабочий стол, телефон, консоль.
Как выбор относится к производительности и оптимизации?
У меня простой вопрос: как выбрать целое число для использования?