C語言printf()函數(shù)具體解釋和安全隱患
關(guān)注+星標(biāo)公眾號,不錯(cuò)過精彩內(nèi)容
編排 | strongerHuang
微信公眾號?|?嵌入式專欄
程序員都知道,也都會使用printf函數(shù),但你知道它也有“安全隱患”嗎?
下面就來舉例我說說:
嵌入式專欄
打印輸出的數(shù)據(jù)并不是理論值,如下圖(右邊):
嵌入式專欄
請細(xì)致注意看下面代碼,有如以下奇怪的現(xiàn)象:
int a=5;
floatx=a; //這里轉(zhuǎn)換是沒有問題的。%f打印x是 5.000000
printf("%d\n",a);
printf("%f\n",a); //輸出為什么是0.000000?-----問題1
printf("%f\n",x);
printf("%d\n",x); //輸出為什么是0?-----問題2
printf("%f,%f\n",a,x); //輸出都是0.000000 為什么? ----問題3
printf("%f,%f\n",x,a); //調(diào)換一下a,x的順序,正常了,為什么?----問題4
printf("%d,%f\n",a,x);
getchar();
return0;
嵌入式專欄
char string[]="Hello World!";
printf("String: %s ,強(qiáng)行再讀一次: %#p\n", string);
printf("String: %s ,強(qiáng)行再讀一次: %#s\n", string);
String:Hello World! , 強(qiáng)行再讀一次: 0X001C1073
String: Hello World! ,強(qiáng)行再讀一次: 閮
嵌入式專欄
問題1:printf("%f\n",a) 輸出為什么是0.000000?
后臺回復(fù)『嵌入式C語言』閱讀更多相關(guān)文章。
點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!