【发布时间】:2016-06-28 23:07:53
【问题描述】:
例如,在下面的表达式中
i-- && expr
在评估expr 时,i 是否已经递减?语言律师会适应这里。
【问题讨论】:
标签: c++ language-lawyer undefined-behavior side-effects
例如,在下面的表达式中
i-- && expr
在评估expr 时,i 是否已经递减?语言律师会适应这里。
【问题讨论】:
标签: c++ language-lawyer undefined-behavior side-effects
如果&& 运算符是内置运算符,则可以。来自[expr.log.and]/2:
如果对第二个表达式求值,则与第一个表达式关联的每个值计算和副作用都会在与第二个表达式关联的每个值计算和副作用之前进行排序。
如果运算符重载,则为普通函数调用,函数调用参数的求值顺序未指定。
【讨论】:
a+b+c 是从左到右一样,它要求operator+ 的顺序相同。 不可能这会导致短路,因为operator&& 不必使用布尔值来短路电路!它确实需要 2 个参数——第二个的值是多少?