2012-02-19 56 views

回答

4

它是在編譯時計算的,至少使用iOS的Xcode。此功能:

float test() { 
    float x = 109.0f*768.0f/320.0f; 
    return x; 
} 

編譯爲這三個操作的指令:

movw r0, #52429 
movt r0, #17282 
bx lr 

計算在編譯時的值沒有被C標準要求。實際上,如果你設置了FENV_ACCESS編譯指示,有些情況下在編譯時禁止計算它。打開FENV_ACCESS不會影響此測試用例中生成的指令。

+0

優秀的答案,謝謝。 – jonsibley 2012-02-19 01:00:51

+0

@rob您使用的「優化級別」的值是多少?當「優化級別=無」時,優化是否仍然完成? – sch 2012-02-19 01:10:57

+0

這是-O0(沒有優化)。 – 2012-02-19 04:02:14