Подтвердить что ты не робот

Что означает "u" после номера?

Можете ли вы рассказать мне, что именно делает "u" после числа, например:

#define NAME_DEFINE 1u 
4b9b3361

Ответ 1

Целочисленные литералы, такие как 1 в C-коде, всегда имеют тип int. int - это то же самое, что и signed int. Один из них добавляет u или U (эквивалент) к литералу, чтобы гарантировать, что он имеет тип unsigned int, чтобы предотвратить различные неожиданные ошибки и странное поведение.

Один из примеров такой ошибки:

На 16-битной машине, где int равно 16 битам, это выражение приведет к отрицательному значению:

long x = 30000 + 30000;

Оба 30000 литералов имеют тип int, и поскольку оба операнда имеют тип int, результатом будет int. 16-разрядное целое число со знаком может содержать значения только до 32767, поэтому оно будет переполнено. Из-за этого x получит странное отрицательное значение, а не 60000, как ожидалось.

Код

long x = 30000u + 30000u;

однако, будет вести себя как ожидалось.

Ответ 2

Это способ определить строковые константы без знака.

Ответ 3

Это способ сообщить компилятору, что константа 1 предназначена для использования в качестве целого без знака. Некоторые компиляторы предполагают, что любое число без суффикса типа 'u' имеет тип int. Чтобы избежать этой путаницы, рекомендуется использовать суффикс типа "u" при использовании константы как целого числа без знака. Существуют и другие подобные суффиксы. Например, для float 'f' используется.

Ответ 4

это означает "unsigned int", в основном он функционирует как приведение, чтобы убедиться, что числовые константы преобразуются в соответствующий тип во время компиляции.