Единственная ошибка в вашем коде состоит в том, что вы забыли точку с запятой в конце второй строки, но я предполагаю, что это была типографская ошибка при составлении вашего вопроса, а не фактическая направленность вашего вопроса.
Я не вижу причин, по которым код, который вы показали, должен вызывать ошибку компиляции.Он компилируется просто отлично для меня, и значение a
фактически равно 3.
Убедитесь сами : следующий код возвращает 3:
int main()
{
int a=1, b= 2, c=3;
a = (b,c);
return a;
}
Хитрость заключается в том, что вы используете оператор запятой , который оценивает свой первый операнд, а затем отбрасывает результат, а затем оценивает второй операнд и возвращает его значение.
Однако, как отмечает Charles Bailey , вы должны обернуть код, показанный в вопросе, внутри функции, иначе вы получите ошибки компиляции в любом компиляторе.C ++ не разрешает операторы присваивания вне функций.