[英]Can anyone explain the output
如果我嘗試將float
打印為int
,則此代碼:
main () {
float a = 6.8f;
printf("%d", a);
}
打印1073741824,而此代碼:
main () {
float a = 9.5f;
printf("%d", a);
}
打印0。
輸出未定義嗎? 此外, %f
何時與整數一起使用, %d
與雙%d
使用?
不僅輸出,而且整個程序都有未定義的行為,因為傳遞給printf()
的值的類型與格式字符串期望的類型不匹配。
根據C99標准第7.19.6.1節,fprintf函數 :
如果任何參數都不是相應轉換規范的正確類型,則行為未定義。
%d
期望int
而不是float
,因此程序具有未定義的行為(包括輸出)。
如前面的答案中所述,如果打印格式與傳遞的類型不匹配,則顯示未定義的行為。
如果您想將整數查看為float,則需要進行類型轉換。
int j = 5;
printf("%f",(float)(j));
這將輸出輸出為5.0,即為浮點數字
C標准說,printf格式必須與傳入的類型匹配。如果不匹配,則行為顯然是未定義的:
C99,7.19.6.1#9(fprintf)
如果轉換規范無效,則行為是不確定的。239)如果任何參數不是對應轉換規范的正確類型,則行為是不確定的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.