簡體   English   中英

誰能解釋輸出

[英]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.

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