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