Jak działa operator przecinka w C ++?
Na przykład, jeśli to zrobię:
a = b, c;
Czy koniec równa się b lub c?
(Tak, wiem, że jest to łatwe do przetestowania - wystarczy udokumentować tutaj, aby ktoś mógł szybko znaleźć odpowiedź).
Aktualizacja: to pytanie ujawniło niuans podczas korzystania z operatora przecinka. Żeby to udokumentować:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
To pytanie zostało zainspirowane literówką w kodzie. Co miało być
a = b;
c = d;
Zmienił się w
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
faktycznie działa tak, jak zamierzono a = b; c = d;
?
b
i d
są wartościami funkcji, które używają (i modyfikują) wspólny stan, kolejność wykonywania nie jest zdefiniowana do C++17
.