在解决 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 Sizes of integer types
Their implementation-defined values shall be equal or greater in magnitude (absolute value) to those shown, with the same sign.
关于c - UINT_MAX 与 C 中的 ULONG_MAX 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749930/