UINT_MAX与C中的ULONG_MAX相同
在解决K&R C书中的练习时,我偶然发现了练习2.1。
起初我把UINT_MAX
作为-1
,但后来我使用了%u
占位符,但现在它给了我与ULONG_MAX
相同的数字。
在附录B的书中,他们说UINT_MAX
应该是65535
而ULONG_MAX
应该是4294967295
,但是在运行练习时,它给我的UINT_MAX
和ULONG_MAX
都是4294967295
。
这是为什么?
首先,打印unsigned long
的正确方法不是%u
而是%lu
。 其次,标准说UINT_MAX
的最小值是65535.它可以(通常是)更大。
5.2.4.2.1整数类型的大小
它们的实现定义值的大小 (绝对值)应等于或大于所示的值,并带有相同的符号。
在32位平台上, int
和long
通常是相同的,因此它们的max也是相同的。 当然,他们的未签约同行也是如此。
附录是错误的。 唯一的保证是sizeof(long)> = sizeof(int)> = sizeof(char)注意相等的可能性。