簡體   English   中英

嘗試打印unsigned long,但獲取不同的數字

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM