您是否必须将`u`后缀附加到无符号整数?

时间:2019-04-12 16:26:58

标签: c variables literals unsigned

我知道后缀u的意思是“未签名”。但是下面的代码在必需的中吗?

uint32_t hash = 2166136261u;

是问题还是惯例?还是在这种情况下有任何技术意义?无论如何,该值都应转换为无符号,因为uint32_t是无符号的。

我应该何时以及何时不应该将u后缀用于无符号整数值?

1 个答案:

答案 0 :(得分:4)

否,没有必要。 2147483648变得有趣起来,您的人数比这个数字还要大。

请注意,如果2166136261的位数为32位或更少,则long的形式为long longint。但是它们都可以以明确定义的方式转换为uint32_t

最后一点:如果0x811C9DC5具有32位或更多,则等效十六进制unsignedint类型。噢,快乐!

参考:https://en.cppreference.com/w/c/language/integer_constant