printf總是打印0

好久沒用 c 的 printf 輸出了,然后今天調(diào)程序就遇到了一個奇怪的錯誤,如下:

long long n = 9999;
long long m = 8888;
printf("%d %d\n", n, m);

輸出結(jié)果如下:

9999 0

想了好久都沒有想出原因,最后試著增減參數(shù),終于發(fā)現(xiàn)了問題。(后面才發(fā)現(xiàn)編譯器的警告里都寫清楚了,只是日常不看 warning ……)

原因

警告 C4477 “printf” : 格式字符串“ % d”需要類型“int”的參數(shù),但可變參數(shù) 1 擁有了類型“__int64”
n 是 long long 類型,占8位!而 %d 是打印 int 整形數(shù)據(jù)的,int 只占四位,所以,第一個 %d 打印了 n 的低八位,第二個 %d 打印了 n 的高八位?。ㄐ《四J降那闆r下)
至于后面的 m ,直接被忽略掉了……

解決方法

直接把 %d 改成 %lld 就好了:

long long n = 9999;
long long m = 8888;
printf("%lld %lld\n", n, m);
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容