0

在解决 K&R C 书中的练习时,我偶然发现了练习 2.1。

起初我得到 as UINT_MAX-1但后来我使用了%u占位符,但现在它给了我与 相同的数字ULONG_MAX

在附录 B 的书中,他们说UINT_MAX应该是65535ULONG_MAX应该是4294967295,但是在运行练习时,它给了我两个UINT_MAXULONG_MAXas 4294967295

这是为什么?

4

3 回答 3

5

首先,打印 an 的正确方法unsigned long是 not %ubut %lu。其次,标准规定最小值UINT_MAX65535。它可以(并且通常是)更大。

5.2.4.2.1 整数类型的大小

它们的实现定义值的大小(绝对值)应等于或大于所示值,符号相同。

于 2012-03-17T12:21:23.963 回答
1

在 32 位平台上,int通常long是相同的,因此它们的最大值也相同。当然,对于他们未签名的同行也是如此。

于 2012-03-17T12:25:18.783 回答
0

附录是错误的。唯一的保证是 sizeof(long) >= sizeof(int) >= sizeof(char) 注意相等的可能性。

于 2013-05-27T13:42:52.033 回答