Как работает оператор запятой в C ++?
Например, если я делаю:
a = b, c;
В конечном итоге равен b или c?
(Да, я знаю, что это легко проверить - просто документируйте здесь, чтобы кто-то быстро нашел ответ.)
Обновление: этот вопрос выявил нюанс при использовании оператора запятой. Просто документировать это:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
Этот вопрос был фактически вдохновлен опечаткой в коде. Что должно было быть
a = b;
c = d;
Превратился в
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
самом деле работает так же, как предполагалось a = b; c = d;
?
b
и d
являются оценками функций, которые используют (и изменяют) общее состояние, порядок выполнения не определяется до C++17
.