Як працює оператор кома в 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
.