Для выражения как
x = a ? b : c ? d : e;
Я понимаю, что, поскольку оператор?: Имеет правильную ассоциативность, выражение сгруппировано как
x = a ? b : (c ? d : e);
Однако как насчет порядка оценки? Означает ли ассоциативность, что сначала вычисляется ветвь (c? D: e), а затем ее ответ передается как аргумент влево?: Оператор? Или сначала выполняется оценка, а затем в зависимости от того, возвращается ли b или оценивается ветвь (c? D: e)? Или это не определено?
N3376 5,16 / 1
Условные выражения группы справа налево. Первое выражение
контекстно преобразуется в bool (пункт 4). Оценивается и если это
верно, результатом условного выражения является значение
второе выражение, в противном случае это третье выражение. Только один из
второе и третье выражения оцениваются. Каждое значение вычисления
и побочный эффект, связанный с первым выражением последовательности
перед каждым вычислением значения и побочным эффектом, связанным с
второе или третье выражение.
Для условного оператора: