[英]Trying to print an unsigned long, but getting a different number
我有一個簡單的C程序。 我打算打印號碼1528108405744583338 。
這是我的簡單代碼;
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long number = 1528108405744583338;
printf("%lu", number );
return 0;
}
當我運行此代碼時,在控制台上我得到輸出為2930885290 。 這里發生了什么? 我在Dev-C ++,C-Free 5.0環境中嘗試過,但兩者都得到了相同的結果。 我檢查了類似的帖子,並嘗試了解決方法,但答案無法幫助我解決我的問題。 謝謝您的回答。
有問題的值需要64位數據類型, unsigned long
不一定是64位。 保證至少為32位。 因此,如果您的系統使用32位表示unsigned long
您將獲得所獲得的值,如果它使用64位作為unsigned long
您將獲得預期值。
保證unsigned long long
保持此值,因此請使用它。
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned long long number = 1528108405744583338ULL;
printf("%llu", number );
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.