[英]Unsigned long in C
我尝试放置一个未签名的 INT 只是为了玩弄它,但它似乎不起作用我不知道问题可能出在哪里是代码:
#include <stdio.h>
void main()
{
unsigned long nou=2200000000UL;
printf("the number is %d" ,nou);
}
它返回: the number is -2094967296
作为 INT 的最大值 = 2147483647 这是正常的,它没有给出好的输出,但是当我尝试使用时:
#include <stdio.h>
void main()
{
unsigned long nou=2100000000;
printf("the number is %d" ,nou);
}
打印出正确的值,我不知道为什么 unsigned 命令不起作用。
您应该在 printf 调用中将%d
更改为%u
(和%lu
在使用unsigned long
)。
根据大多数系统上的应用程序二进制接口,只要有可能,有符号和无符号整数都会在通用寄存器中传递。 它们的签名由接收它们的子程序确定。
%d
和%i
是**signed** int
十进制输出;
%u
是**unsigned** int
的十进制输出;
%o
、 %x
和%X
也是无符号整数的八进制、十六进制小写和十六进制大写输出。
附录
正如在评论中指出,还有其他的标志和需要,其等级被大于整数修饰符字母int
,整数,其等级被比较小int
在可变参数的功能被提升。
有一些很好的在线资源可以参考 printf 的用法。
cplusplus.com 和 cppreference.com 等对初学者有好处,
当您需要尽可能接近权威的免费参考时,ISO C 草案是很好的选择。 它们可以在http://open-std.org/JTC1/SC22/WG14/www/projects 上找到
各种 Unix 和类 Unix 系统上的 POSIX 标准和手册页包含在这些操作系统环境中可识别的扩展。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.