[英]Why do I get a different value at run-time when type-casting a string to DWORD?
[英]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.