5
A
回答
11
由於乘法運算符不是序列點,因此沒有指定的順序。序列點包括逗號運算符,完整表達式的結尾和函數調用。因此,(a)
和(b)
的評估順序取決於編譯器的實現。因此,您不應該嘗試執行(a)
中的某些操作,該操作會產生您想要在(b)
中看到的副作用,以便生成有效結果。
例如:
int a=5;
int b = (a++) * (a++); //<== Don't do this!!
如果你想要的順序點對C全上市,你可以檢查出一個more thorough reference here。
3
在C90中未指定*
二元運算符的操作數的求值順序。
下面是從C90標準的有關段落(如詢問C90的問題):
(C90,6.3)「除了通過語法或指示不然以後規定(用於函數調用運算符(),& &,||,?,頓號,運營商)的子表達式的計算順序和順序副作用的發生都是unspecitied」
對於*
運營商,如果我們以副作用操作數爲例:
c = f() * g();
實現可以調用f()
第一或g()
第一:
a = f();
b = g();
c = a * b;
或
a = g();
b = f();
c = a * b;
都是有效的翻譯。
相關問題
- 1. 訂購的C評價的(與*和表達++)
- 2. SQL - 訂購公用表表達式
- 3. gnuplot的邏輯表達式評價
- 4. 的Java 8 Lambda表達式評價
- 5. 評價C++函數指針表達
- 6. 表達評價2倍
- 7. 評價在C(新發行)後綴表達式
- 8. 評價條件(三元)在C#插值字符串表達式$
- 9. 訂購C#中的列表
- 10. 正則表達式的C#評論
- 11. 評估後綴C中的表達式
- 12. 在HTML標籤表達的角評價
- 13. 訂購LinQ c#
- 14. 訂購在C
- 15. 布爾表達式評估c#
- 16. C#lambda表達式和懶惰評估
- 17. 如何評估這些C表達式?
- 18. 等價表達式
- 19. 評價在C++
- 20. 評價在C#
- 21. 訂購的C/C++結構
- 22. 評價函數參數內的java腳本表達式
- 23. 不評價表達式的指令模板
- 24. 式評價
- 25. 如何訂購的價值MongoDB的
- 26. 在C#訂購模型的列表
- 27. 如何訂購預購表
- 28. 購物車訂購表
- 29. C++模板正式訂購規則
- 30. 從PowerPack評估合成報價表達式時出錯
[Nothing](http://en.wikipedia.org/wiki/Unspecified_behavior):) :) :) :) – dasblinkenlight 2012-02-24 20:39:30
家庭作業題目需要作業標籤。 – 2012-02-24 20:41:28
@Robert:我認爲沒有人會在作業中提出這樣的問題...... – Bruce 2012-02-24 20:42:01