Rumah >pembangunan bahagian belakang >C++ >Mengapa C Mentafsir 'A a(A());' sebagai Pengisytiharan Fungsi, Bukan Definisi Pembolehubah?
Paradoks Penghuraian Paling Menjengkelkan: Kekaburan Penghuraian dalam C
Dalam C , "penghuraian yang paling menjengkelkan" merujuk kepada kekaburan sintaksis yang boleh membawa kepada tafsiran yang tidak dijangka terhadap binaan bahasa. Pertimbangkan coretan kod berikut:
A a( A() );
Menurut piawaian C, coretan kod ini ditafsirkan sebagai pengisytiharan fungsi untuk a yang mengambil hujah tanpa nama yang mengembalikan objek jenis A. Walau bagaimanapun, ramai pengaturcara secara intuitif mengharapkan ia menjadi takrifan berubah bagi a yang mengambil contoh tanpa nama A.
Mengapa C standard menjadikan ini satu keperluan? Mari kita terokai rasionalnya:
Ringkasnya, "paling menjengkelkan parse" wujud dalam C untuk memastikan pengisytiharan fungsi yang konsisten, mengelakkan kelebihan kata kunci, memudahkan tafsiran kod yang tidak jelas dan mengekalkan duluan sejarah. Walaupun ia mungkin membawa kepada hasil yang tidak dijangka dalam sesetengah kes, faedahnya mengatasi kelemahannya dalam mempromosikan bahasa pengaturcaraan yang jelas dan boleh diramal.
Atas ialah kandungan terperinci Mengapa C Mentafsir 'A a(A());' sebagai Pengisytiharan Fungsi, Bukan Definisi Pembolehubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!