我在c中打印unsigned long的范围有困难

时间:2017-06-26 17:42:12

标签: c

我正在尝试使用 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范围的正确占位符是什么?

如何更正上述代码段。

1 个答案:

答案 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位系统。