[英]Order of expression evaluation in C
如果我有以下表達式:
c = (a) * (b)
C90標准對子表達式'a'和'b'的順序評估有什么看法?
在C90中未指定*
二元運算符的操作數的評估順序。
以下是C90標准的相關段落(關於C90的問題):
(C90,6.3)“除非語法指示或稍后指定(對於函數調用運算符(),&&,||,?:和逗號運算符)。子表達式的計算順序和順序發生的副作用都是未指明的“
對於*
運算符,如果我們以副作用操作數為例:
c = f() * g();
實現可以先調用f()
first或g()
調用:
a = f();
b = g();
c = a * b;
要么
a = g();
b = f();
c = a * b;
兩者都是有效的翻譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.