标签: c++ language-lawyer undefined-behavior side-effects
例如,在以下表达式中
i-- && expr
评估i时,expr是否会减少?语言律师会在这里适应。
i
expr
答案 0 :(得分:6)
如果&&运算符是内置运算符,则为是。来自[expr.log.and] / 2:
&&
如果计算第二个表达式,则在每个值计算和与第二个表达式相关的副作用之前,对与第一个表达式相关的每个值计算和副作用进行排序。
如果运算符被重载,则它是正常的函数调用,并且未指定函数调用参数的求值顺序。