Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah Kod \"Bahasa Pengaturcaraan C\" Edisi Keempat Menunjukkan Gelagat Yang Ditakrifkan dengan Baik?

Adakah Kod \"Bahasa Pengaturcaraan C\" Edisi Keempat Menunjukkan Gelagat Yang Ditakrifkan dengan Baik?

Barbara Streisand
Barbara Streisandasal
2024-10-23 22:14:29183semak imbas

Does Fourth Edition

Adakah Kod daripada "The C Programming Language" Edisi Ke-4 Mempunyai Gelagat Yang Ditakrifkan dengan Baik?

Kod yang dipersoalkan mempamerkan tingkah laku yang tidak ditentukan, walaupun tidak menggunakan tingkah laku yang tidak ditentukan. Ini disebabkan oleh susunan penilaian sub-ungkapan yang tidak ditentukan, terutamanya mengenai panggilan untuk s.replace().

Prinsip Penilaian Sub-Ungkapan Tidak Ditentukan

Fungsi hujah mempunyai susunan penilaian yang tidak ditentukan, bermakna susunan penilaian hujah fungsi individu tidak boleh diandaikan. Dalam kes ini, hujah untuk s.find() tidak dijamin akan dinilai sebelum atau selepas s.replace().

Impak Susunan Penilaian

Bergantung pada susunan penilaian, keputusan s.find() boleh diubah oleh kesan sampingan s.replace(). Ini kerana s.replace() mengubah suai panjang rentetan, menjejaskan hasil panggilan s.find() berikutnya.

Perbezaan Penilaian Sebenar

Dalam ujian disediakan, dentang menilai s.find("genap") sebelum s.replace(0, 4, ""), manakala gcc menilai mereka berpotensi dalam susunan yang bertentangan. Perbezaan tertib ini membawa kepada hasil yang berbeza dalam panggilan fungsi berantai.

C 17 Changes

Dalam C 17, susunan penilaian untuk ungkapan postfix (seperti panggilan berantai) telah diperkuatkan. Permulaan parameter (termasuk kesan sampingan) dalam hujah fungsi kini dijujukan secara tidak tentu berkenaan dengan parameter lain. Ini memastikan bahawa kod seperti yang dipersoalkan akan mempunyai gelagat yang dinyatakan dengan baik.

Atas ialah kandungan terperinci Adakah Kod \"Bahasa Pengaturcaraan C\" Edisi Keempat Menunjukkan Gelagat Yang Ditakrifkan dengan Baik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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