Adakah `cout

Barbara Streisand
Lepaskan: 2024-12-15 02:17:09
asal
1000 orang telah melayarinya

Is `cout

Menyingkap Enigma "cout << a << a": Kelakuan Tidak Ditakrifkan atau 01 Yang Ditakdirkan?

Dalam temu bual baru-baru ini, teka-teki pengekodan yang membingungkan muncul:

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

Dengan pilihan yang menarik untuk dipilih, termasuk 10, 01, dan "tingkah laku yang tidak ditentukan" misteri, orang yang ditemuduga memilih 01 dengan yakin, memetik pemahaman mereka tentang titik jujukan. Walau bagaimanapun, jawapan penemuduga disambut dengan hairan: jawapan yang betul adalah, menghairankan, tidak ditentukan.

Meneroka Wilayah Tidak Ditakrifkan

Mata jujukan biasanya menjamin penyelesaian kesan sampingan sebelum ini. beralih kepada penilaian seterusnya. Menariknya, pernyataan yang dipersoalkan tidak mempunyai sebarang titik urutan antara penilaian hujah. Ini bermakna hujah "a" boleh dikira sebelum atau selepas hujah "cout << a ." Kekaburan ini menyebabkan keputusan tidak dapat diramalkan, justeru menganggap tingkah laku yang tidak ditentukan.

A Ray of Hope dalam C 17

Lanskap pengekodan telah diubah dalam C 17, di mana peraturan yang mengawal penilaian ekspresi telah disemak. Garis panduan terkini secara jelas menetapkan bahawa dalam ungkapan operator shift, semua pengiraan dan kesan sampingan argumen pertama ("E1") disusun sebelum argumen kedua ("E2").

Pelarasan penting ini mewajibkan coretan kod yang dipersoalkan kepada output 01. Tingkah laku yang tidak ditentukan yang sukar difahami telah dilenyapkan, digantikan dengan kepastian yang telah ditetapkan hasil.

Selam Lebih Dalam ke dalam Bara P0145R3

Bagi mereka yang mencari pemahaman yang lebih komprehensif, kertas teknikal P0145R3: Perintah Penilaian Ungkapan Penapisan untuk Idiomatik C mendalami perincian rumit susunan penilaian ungkapan yang disemak, memberikan gambaran mendalam tentang evolusi C paradigma pengekodan.

Atas ialah kandungan terperinci Adakah `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