В соответствии с эта таблица приоритетов, оператор запятая лево-ассоциативный, То есть a, b, c
анализируется как (a, b), c
. Это необходимость? Не было бы a, (b, c)
иметь то же самое поведение?
Должен ли оператор запятой быть лево-ассоциативным?
Ответ 1
Так как существует перегружаемый operator,
, нет, это не то же поведение. a, (b, c)
может вызвать разные перегрузки, чем (a, b), c
.
Ответ 2
Оператор с запятой имеет ассоциативную ассоциацию слева направо. Два выражения, разделенные запятой, оцениваются слева направо. Левый операнд всегда оценивается, и все побочные эффекты завершаются до того, как будет оценен правый операнд.
Запятые могут использоваться в качестве разделителей в некоторых контекстах, таких как списки аргументов функций. Не путайте использование запятой в качестве разделителя с ее использованием в качестве оператора; эти два использования совершенно разные.