簡體   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