C++ C++;嵌套条件运算符求值顺序

C++ C++;嵌套条件运算符求值顺序,c++,conditional,operator-keyword,evaluation,C++,Conditional,Operator Keyword,Evaluation,对于这样的表达 x = a ? b : c ? d : e; 我理解,因为?:运算符具有正确的关联性,所以表达式被分组为 x = a ? b : (c ? d : e); 但是,评估的顺序如何?结合性是否意味着(c?d:e)分支首先求值,然后将其答案作为参数传递到左侧?:运算符?或者是先计算a,然后根据返回的是b还是(c?d:e)分支进行计算?还是未定义?对于条件运算符: 首先计算第一个操作数 根据第一个的值计算第二个或第三个(但不是两者) 对于条件运算符: 首先计算第一个操作数 根据第

对于这样的表达

x = a ? b : c ? d : e;
我理解,因为?:运算符具有正确的关联性,所以表达式被分组为

x = a ? b : (c ? d : e);

但是,评估的顺序如何?结合性是否意味着(c?d:e)分支首先求值,然后将其答案作为参数传递到左侧?:运算符?或者是先计算a,然后根据返回的是b还是(c?d:e)分支进行计算?还是未定义?

对于条件运算符:

  • 首先计算第一个操作数
  • 根据第一个的值计算第二个或第三个(但不是两者)

对于条件运算符:

  • 首先计算第一个操作数
  • 根据第一个的值计算第二个或第三个(但不是两者)
n3376 5.16/1

条件表达式从右向左分组。第一个表达是 上下文转换为bool(第4条)。对其进行评估,如果 如果为true,则条件表达式的结果为 第二个表达式,否则为第三个表达式。只有一个 计算第二个和第三个表达式每个值的计算 和第一个表达式相关联的副作用被测序 在每次数值计算和副作用之前 第二个或第三个表达式。

n3376 5.16/1

条件表达式从右向左分组。第一个表达是 上下文转换为bool(第4条)。对其进行评估,如果 如果为true,则条件表达式的结果为 第二个表达式,否则为第三个表达式。只有一个 计算第二个和第三个表达式每个值的计算 和第一个表达式相关联的副作用被测序 在每次数值计算和副作用之前 第二个或第三个表达式。


即使我能记住关联性,为了清楚起见,我还是会使用括号
1>2?即使我能记住关联性,我也会为了清楚起见总是使用括号
1>2?我的理解是否正确:“a”转换为bool,如果为真,“b”是结果,如果为假,则对(c?d:e)分支求值?我的理解是否正确:“a”转换为bool,如果为真,“b”是结果,如果为假,则对(c?d:e)分支求值?