簡體   English   中英

C語言中函數執行的優先順序

[英]Precedence order of function execution in C

以下語句的執行順序是什么:

x = f(2) * g(5) + h();

我看過這個鏈接,優先順序應該是f,g和h。 我是對還是沒有,請解釋一下

在這種情況下,您無法保證函數的執行順序。

雖然優先規則意味着在將h()添加到結果之前將f(2)乘以g(5) ,但這些子表達式的執行順序是實現定義的。

如果您使用具有副作用的功能執行此操作,請不要這樣做。 根據代碼,您可能會看到編譯器到編譯器的不同結果,也可能看不到。

注意:正如@Jakub Zaverka所提到的,當您處理邏輯運算符&&||時,規則略有不同 因為短路等功能。

f(2)g(5)h()任何順序執行。

f()g()結果相乘。 然后將該產品添加到h()的結果中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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