来自标准草案 N1256,第 6.4.4.1 节,第 5 条:
整数常量的类型是可以表示其值的对应列表中的第一个。
从表中,似乎没有后缀的八进制和十六进制常量将被分配任何标准整数类型(signed
/unsigned
和int
/ long int
/的最小合适组合long long int
)。对于十进制常量,signed
默认情况下只考虑类型。
u
为什么/U
存在对我来说很有意义;有符号溢出行为充其量与无符号溢出行为不同,最坏的是UB,所以我想可能有必要在复杂的表达式中指定文字的无符号性。
这给我们留下了L
/l
和LL
/ll
后缀。它们只能用于选择整数文字类型的下限。这在 C99 中有什么实际用途?