[英]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.