Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在c中打印无符号长字符范围时遇到困难_C - Fatal编程技术网

我在c中打印无符号长字符范围时遇到困难

我在c中打印无符号长字符范围时遇到困难,c,C,我试图使用limits.h库和以下代码打印无符号长数据类型的范围 #include <stdio.h> #include <limits.h> int main() { printf("The range of UNSIGNED LONG = %lu \n", ULONG_MAX); return 0; } 返回的值是:4294967295 这个值似乎是错误的 用于打印无符号长字符范围的正确占位符是什么 如何更正上述代码段。返回的值

我试图使用limits.h库和以下代码打印无符号长数据类型的范围

#include <stdio.h>
#include <limits.h>

   int main()
   {
   printf("The range of UNSIGNED LONG =   %lu  \n", ULONG_MAX);
   return 0;
   }
返回的值是:4294967295

这个值似乎是错误的

用于打印无符号长字符范围的正确占位符是什么


如何更正上述代码段。

返回的值有效

附录E中:

1标题限制.h的内容如下所示,按字母顺序排列。所示最小震级应替换为 实现定义的具有相同符号的震级。数值应为: 所有表达式都应该是常量表达式,适用于if预处理 指令。5.2.4.2.1中进一步描述了这些部件

#define UINT_MAX 65535
#define ULONG_MAX 4294967295
无符号long的大小是由实现定义的,但具有它可以表示的最小值范围。您得到的值在该范围内。其他类型(如unsigned int)有自己的最小值


通常,但并非总是如此,32位操作系统上的编译器的长度为32位,而64位操作系统上的编译器的长度为64位。最有可能的情况是,您使用的是32位系统,带有32位编译器。

这在我看来非常正确。为什么看起来是错误的?2^32-1=4294967295为什么您认为该值错误?您是否假设long应该具有64位宽度?在您的实现中,unsigned int和unsigned long的范围是相同的。64位操作系统上的编译器将具有64位long。Windows开发人员从未说过:p通常,32位操作系统或64位Windows上的编译器的长度为32位,而64位POSIX ish系统Unix及其相关系统上的64位编译器的长度为64位。64位Unix类系统上的32位编译可能仍使用32位。谢谢您提供的信息。@EdmundCarvalho很高兴我能提供帮助。如果你觉得它有用的话,请随意使用。