когда бы вы использовали uint_least16_t - PullRequest
5 голосов
/ 30 октября 2008

Я смотрю на stdint.h и, учитывая, что в нем есть uint16_t и uint_fast16_t, какова польза от uint_least16_t, что вы могли бы пожелать, что нельзя было бы сделать одинаково хорошо с одним из двух других?

Ответы [ 3 ]

10 голосов
/ 30 октября 2008

Скажем, вы работаете над компилятором с:

  • unsigned char - это 8 бит
  • unsigned short - это 32 бита
  • unsigned int - 64 бита

А unsigned int - «самый быстрый». На этой платформе:

  • uint16_t будет не будет доступен
  • uint_least16_t будет 32-битным значением
  • uint_fast16_t будет 64-битным значением

Немного загадочно, но вот для чего.

Насколько они полезны, это другая история - я постоянно вижу варианты точного размера. Это то, что люди хотят. «Минимальные» и «быстрые» версии, которые я видел, использовались довольно близко к никогда (возможно, это было только в примере кода - я действительно не уверен).

2 голосов
/ 30 октября 2008

Ах, ссылка, опубликованная Патриком, включает в себя следующее: «Имя typedef uint_leastN_t обозначает целочисленный тип без знака с шириной не менее N, так что целочисленный тип без знака с меньшим размером не имеет по крайней мере указанной ширины».

Итак, мое текущее понимание:

uint_least16_t самая маленькая вещь, способная удерживать уинт16

uint_fast16_t самая быстрая вещь, способная удерживать uint16

uint16_t точно uint16, к сожалению, может быть недоступен на всех платформах, на любой платформе, где есть, uint_least16_t будет ссылаться на него. Поэтому, если бы он гарантированно существовал на всех платформах, нам вообще не понадобился бы uint_least16_t.

0 голосов
/ 30 октября 2008

Это часть стандарта c. Это не нуждается в хорошем случае использования. : P

См. эту страницу и найдите раздел под названием "Целочисленные типы минимальной ширины".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...