Bagaimana cara kerja operator koma di C ++?
Misalnya, jika saya lakukan:
a = b, c;
Apakah akhirnya sama dengan b atau c?
(Ya, saya tahu ini mudah untuk diuji - hanya mendokumentasikan di sini agar seseorang dapat menemukan jawabannya dengan cepat.)
Pembaruan: Pertanyaan ini telah memunculkan nuansa ketika menggunakan operator koma. Hanya untuk mendokumentasikan ini:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
Pertanyaan ini sebenarnya terinspirasi oleh salah ketik kode. Apa yang dimaksudkan
a = b;
c = d;
Berubah menjadi
a = b, // <- Note comma typo!
c = d;
a = (b, c);
.
a = b, c = d;
benar-benar melakukan hal yang sama seperti yang dimaksudkan a = b; c = d;
?
b
dan d
merupakan evaluasi fungsi yang menggunakan (dan memodifikasi) keadaan umum, urutan eksekusi tidak ditentukan hingga C++17
.