0
C課程的實踐測試複習問題。C具有操作員關聯性和優先級的功能評估順序
int c = f1(2,3) * f2(3,4) + f3(4,5);
函數評估的順序是什麼?答案依賴於編譯器。 我的問題:爲什麼不使用*,+運算符的左到右關聯性和優先級?我將它改爲f1()+ f2()* f3(),並在每個函數中放置puts(「f1 now」)命令以進行快速測試。結果是順序f1,f2,f3,因此顯然不使用操作員關聯性和優先級對函數的評價順序我在思考3個函數設置/操作3個全局變量的後果,所以評價順序會很重要。
以外,不要寫這樣的代碼這是一個練習複習問題),我很困惑爲什麼運算符的優先級/關聯性並不決定函數賦值的順序,在此先感謝
答案:專業工程師不關心,因爲他們放在明確的括號,使代碼的操作清晰,或因爲他們根本沒有使用這樣的表達式,因爲臨時變量和兩行使東西更容易進行調試。 –
只有在訂單無關緊要時才能編寫這樣的代碼。你可以寫'y = sin(x)+ cos(x);'但是不會做'y = create_file(x)+ write_data(x)+ close_file(x);'。這只是沒有意義。 –
@MartinJames但放入額外的括號並不會改變評估順序,對吧?這似乎是這個被標記爲重複的線程的整個點。 (除此之外,我將成爲那些說我頑固地拒絕加入括號的人,因爲避免它們可以確保我知道優先級/關聯性規則。*等待大量西紅柿*) –