簡體   English   中英

%X 格式說明符僅打印最多 4 個字節的值?

[英]%X format specifier prints value only up to 4 bytes?

6378624653 的十六進制值為:0x17C32168D 但此代碼打印:0x7C32168D

#include<iostream>

int main()
{
    int x = 6378624653;
    printf("0x%x", x);
}

誰能解釋為什么會這樣? 我應該怎么做才能獲得正確的 output?

得到的結果意味着int類型的 object 不能存儲6378624653這樣大的值。

試試下面的測試程序。

#include <iostream>
#include <limits>

int main() 
{
    std::cout << std::numeric_limits<int>::max() << '\n';
    std::cout << 6378624653 << '\n';
    std::cout << std::numeric_limits<unsigned int>::max() << '\n';
}

並查看可以存儲在int類型的 object 中的最大值是多少。 在大多數情況下使用不同的編譯器,您將獲得以下 output

2147483647
6378624653
4294967295

也就是說,即使是unsigned int類型的對象也不能存儲 6378624653 這樣的值。

您應該將變量x聲明為類型為unsigned long long int

這是一個演示程序。

#include <cstdio>

int main() 
{
    unsigned long long int x = 6378624653;
    printf( "%#llx\n", x );
}

程序 output 是

0x17c32168d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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