условный — пример приоритета оператора C ++

Я пытаюсь выяснить, как следующее выражение сгруппировано в соответствии с приоритетом:

int x = 0, y = 0;
someValue ? ++x, ++y : --x, --y;

Когда someValue равно 0 (false), вычисляется вторая часть, и x и y становятся -1. Однако, если someValue равно 1 (true), то каким-то образом x становится 1, а y остается 0, что означает, что вычисляется и вторая часть условного выражения, но только часть —y, которую я предполагаю, связана с оператором запятой, но Я не могу за всю жизнь понять, как это достигается. Любое понимание будет оценено.

1

Решение

, имеет самый низкий приоритет среди всех операторов, поэтому ваше выражение анализируется как

(someValue ? ++x, ++y : --x), --y;
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]