c - UINT_MAX 与 C 中的 ULONG_MAX 相同

标签 c max long-integer unsigned kr-c

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

起初我得到 UINT_MAX 作为 -1,但后来我使用了 %u 占位符,但现在它给了我相同的编号为 ULONG_MAX

在附录 B 的书中,他们说 UINT_MAX 应该是 65535ULONG_MAX 应该是 4294967295 ,但是在运行练习时,UINT_MAXULONG_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/

相关文章:

java - 从 double 到 long 的强制转换的细节

C 链表只包含第一个元素......不知道剩下的会发生什么

c++ - 使用 CMake 构建可移植的 Python C-API

.net - F#中类型的最大值/最小值

java - JPA BigInteger 和 Long 问题

java - 将 long 转换为 "byte-array-ed"文本,无需堆分配

c++ - 在 C(或 C++)中循环遍历 WAV 文件

c - 数列长度、数组中元素的第一个和最后一个索引

python - 使用 groupby 获取组中具有最大值的行

SQL Server : Finding Max Value in Result Set