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