Avi*_*ohn 7 c variables unsigned literals
我知道u后缀的意思是“未签名”。但是以下代码中有必要吗?
uint32_t hash = 2166136261u;
Run Code Online (Sandbox Code Playgroud)
是问题还是惯例?还是在这种情况下有任何技术意义?该值无论如何都应转换为无符号,因为它uint32_t是无符号的。
什么时候应该,什么时候不应该将u后缀用于无符号整数值?
不,没有必要。事情变得很有趣,2147483648而你的人数比这个还要多。
请注意,如果具有 32 位或更少,则形式上2166136261是 along或类型。但两者都可以以明确定义的方式转换为 a。long longintuint32_t
最后一点:如果具有 32 位或更多位,则等效的十六进制0x811C9DC5是一种类型。噢,喜悦!unsignedint
参考: https: //en.cppreference.com/w/c/language/integer_constant