簡體   English   中英

為什么在printf負整數值時需要強制類型轉換

[英]why do I need type casting when printf negative interger value

下面的代碼打印一個非常大的整數值,而不是-1。

int64_t num = -1
printf("%lld",num);

我需要鍵入強制類型才能打印-1。

printf("%lld",(int64_t) num);

有誰知道為什么嗎? 是標准的嗎? 還是不確定的行為(取決於系統平台)?

我使用x86英特爾處理器和英特爾icc編譯器。

我相信您的代碼沒有嚴格定義。

為了輸出int64_t類型(如果您的編譯器支持,則必須為2的補碼64位有signed類型),您需要首先編寫

#include <cinttypes>

然后使用PRId64作為格式規范:

printf("%" PRId64, num);

如果您擁有C ++的比較優勢,則可以使用相當簡單的std::cout ,假設您的平台實現了該類型,則它將對int64_t具有適當的重載。

暫無
暫無

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

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