Rumah > pembangunan bahagian belakang > C++ > Mengapakah Output `cout

Mengapakah Output `cout

Linda Hamilton
Lepaskan: 2024-12-12 15:10:19
asal
679 orang telah melayarinya

Why is the Output of `cout

Output tidak ditentukan bagi cout << a << a

Dalam coretan kod:

int a = 0;
cout << a++ << a;
Salin selepas log masuk

biasanya diandaikan bahawa tingkah laku itu bersamaan dengan:

cout << (a++) << a;
Salin selepas log masuk

Walau bagaimanapun, disebabkan kekurangan daripada titik urutan antara penilaian hujah fungsi, susunan pelaksanaan tidak dijamin. Pengkompil boleh menilai sebelum atau selepas std::operator<<<>(std::cout, a ).

Oleh itu, tafsiran yang betul ialah:

cout << ((a++) << a);
Salin selepas log masuk

Ini bermakna keputusannya tidak ditentukan, kerana nilai a selepas kenaikan digunakan dalam detik panggilan kepada operator<<<>.

C 17 Pindaan

Dalam C 17, peraturan telah diubah suai supaya:

E1 << E2
Salin selepas log masuk

dinilai sebagai:

std::operator<<<>(std::operator<<<>(E1, E2), E3)
Salin selepas log masuk

dengan semua kesan sampingan E1 disusun sebelum E2. Ini memastikan bahawa serpihan kod kini menghasilkan output "01" yang dijangkakan.

Atas ialah kandungan terperinci Mengapakah Output `cout. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan