繁体   English   中英

C 中的无符号长

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM