Как здесь используется запятая?

Возможный дубликат:
Оператор с запятой С++
Использование C-запятой

Я не новичок в С++, но это первый раз, когда я вижу следующий код:

int a=0;
int b=(a=2,a+1);

Это код на С++. Не могли бы вы рассказать мне, что здесь происходит? И как переменная b получает значение 3?

Ответ 1

Этот код эквивалентен этому:

int a = 2 ; 
int b = a + 1 ;

Первое выражение слева от запятой оценивается, а справа - справа. Результат самого правильного выражения сохраняется в переменной слева от знака =.

За дополнительной информацией обратитесь к оператору запятой.

http://en.wikipedia.org/wiki/Comma_operator

Ответ 2

(a = 2, a + 1); return 3, потому что в общем случае оператор (a, b) возвращает b, а вычисление в (a, b) начинается справа налево. Итак, в вашем случае (a = 2, a + 1) return a + 1 и после выполнения оператора a = 2 a + 1 return 3.