我知道后缀u
的意思是“未签名”。但是下面的代码在必需的中吗?
uint32_t hash = 2166136261u;
是问题还是惯例?还是在这种情况下有任何技术意义?无论如何,该值都应转换为无符号,因为uint32_t
是无符号的。
我应该何时以及何时不应该将u
后缀用于无符号整数值?
答案 0 :(得分:4)
否,没有必要。 2147483648
变得有趣起来,您的人数比这个数字还要大。
请注意,如果2166136261
的位数为32位或更少,则long
的形式为long long
或int
。但是它们都可以以明确定义的方式转换为uint32_t
。
最后一点:如果0x811C9DC5
具有32位或更多,则等效十六进制unsigned
是int
类型。噢,快乐!
参考:https://en.cppreference.com/w/c/language/integer_constant