2017-02-11 43 views
0

我不知道爲什麼我得到0.000000的回報,如果我用%f打印整數變量值。爲什麼我得到0.000000如果我打印整數與%f

`int main() 
{ 
    int age = 18; 
    printf("%f",age); 
    return 0; 
}` 

按照我的想法,它應該返回18.000000 爲我打印的浮點數字格式的整數值。

+1

因爲你沒有通過'%f'所要求的'double'。試試'printf(「%f」,(double)age);'一個好的編譯器會警告你這個不匹配。 –

+0

@WeatherVane:我越來越覺得我們應該在問題發佈前做一個測試:「什麼是未定義的行爲」。 – Olaf

+0

@Olaf我相信我已經看到了幫助建議,不要問像*這樣的問題爲什麼'a = a ++ * --a' print 42?*但我現在不能輕易找到它。也許你可以在Meta上發佈信息? –

回答

0

這是未定義行爲,因爲當你使用了錯誤的格式說明在C.

C99標準7.19.6.1第9段說的:

如果任何參數是不正確的類型對應 轉換規範,行爲是未定義的。

+0

請參考這個接受的答案來解釋,如果你想深入研究C++標準:http://stackoverflow.com/questions/11673503/using-f-to-print-an-integer-variable?answertab=active#tab-top – valleymanbs

+0

@valleymanbs:這是關於C,而不是C++。他們是不同的語言;如果你想爲C++推送一個答案,請提出一個問題並自我回答。 – Olaf

+0

請更新您的文件。 6年以來C99不是標準C級。你可以使用最終草案n1570。 – Olaf