表达式中操作数求值的顺序
编写表达式时,了解操作数求值的顺序非常重要。这可能会影响表达式的结果,尤其是在涉及副作用时。
C 和 C
在 C 和 C 中,操作数的求值顺序都是未指定。这意味着编译器可以按照它选择的任何顺序自由地计算操作数。
例如,考虑表达式 a b。不保证 a 将在 b 之前被评估。编译器可以选择先计算 b,然后在计算 a 之前将结果存储在临时变量中。
C 的标准明确指出“函数参数的计算顺序未指定”,而对于普通的运算符,“各个运算符的操作数和各个表达式的子表达式 [...] 的求值顺序未指定。”
C 11 及以后
措辞在 C 11 及更高版本中,操作数求值顺序略有变化。第二个声明现在表示该顺序是“未排序的”而不是未指定的。然而,这本质上是相同的概念。编译器仍然不需要以任何特定顺序计算操作数。
结论
重要的是要注意,C 和 C 中未指定操作数计算的顺序, C.这可能会影响表达式的结果,尤其是在涉及副作用时。编写表达式时,最好避免依赖特定的求值顺序。
以上是C 和 C 中操作数求值顺序是否得到保证?的详细内容。更多信息请关注PHP中文网其他相关文章!