我正在尝试使用 limits.h 库以及以下代码打印UNSIGNED LONG数据类型的范围。
#include <stdio.h>
#include <limits.h>
int main()
{
printf("The range of UNSIGNED LONG = %lu \n", ULONG_MAX);
return 0;
}
返回的值为:4294967295
这个值似乎错了,
用于打印UNSIGNED LONG范围的正确占位符是什么?
如何更正上述代码段。
答案 0 :(得分:1)
您获得的价值有效。
来自C standard的附录E:
1 标题 limits.h 的内容在下面按字母顺序给出。显示的最小幅度应替换为 具有相同符号的实现定义的量值。价值观 都是适用于#if预处理的常量表达式 指令。这些组件在5.2.4.2.1中进一步描述。
...
#define UINT_MAX 65535 #define ULONG_MAX 4294967295
unsigned long
的大小是实现定义的,但它具有可以表示的最小值范围。您获得的价值在该范围内。其他类型如unsigned int
都有自己的最小值。
通常(但并非总是),32位操作系统上的编译器将具有32位long
,而64位操作系统上的编译器将具有64位long
。最有可能的是,你使用32位编译器的32位系统。