后递减和逻辑运算符之间的相互作用

时间:2016-03-14 02:25:44

标签: c++ language-lawyer undefined-behavior side-effects

例如,在以下表达式中

i-- && expr

评估i时,expr是否会减少?语言律师会在这里适应。

1 个答案:

答案 0 :(得分:6)

如果&&运算符是内置运算符,则为是。来自[expr.log.and] / 2:

  

如果计算第二个表达式,则在每个值计算和与第二个表达式相关的副作用之前,对与第一个表达式相关的每个值计算和副作用进行排序。

如果运算符被重载,则它是正常的函数调用,并且未指定函数调用参数的求值顺序。