Rumah > pembangunan bahagian belakang > C++ > Adakah Pemalar Tidak Ditakrifkan Menilai kepada 0 dalam #jika Keadaan dalam C dan C ?

Adakah Pemalar Tidak Ditakrifkan Menilai kepada 0 dalam #jika Keadaan dalam C dan C ?

Susan Sarandon
Lepaskan: 2024-11-15 12:43:02
asal
643 orang telah melayarinya

Do Undefined Constants Evaluate to 0 in #if Conditions in C and C  ?

Pemalar Tidak Tertakrif dan #jika Penilaian Keadaan dalam C dan C

Dalam logik prapemproses, makro dan pemalar sering memainkan peranan penting. Satu senario biasa timbul apabila berurusan dengan pemalar tidak ditentukan dalam keadaan #jika. Di sini, kita akan meneroka sama ada bergantung pada gelagat yang boleh diramal daripada pemalar tidak ditentukan ini adalah sah.

Masalah:

Pembangun sering menganggap bahawa pemalar tidak ditentukan mengambil nilai 0 apabila digunakan dalam penilaian #if. Adakah andaian ini boleh dipercayai, atau patutkah kita menjangkakan gelagat yang tidak ditentukan daripada pemalar yang tidak ditentukan?

Jawapan:

Ya, anda boleh bergantung pada andaian ini. Piawaian C99 menyatakan dengan jelas dalam §6.10.1 ¶3:

Selepas semua penggantian disebabkan pengembangan makro dan pengendali unari yang ditentukan telah dilakukan, semua pengecam yang tinggal digantikan dengan nombor pp 0

Begitu juga, piawai C (§16.1 ¶4) menentukan:

Selepas semua penggantian disebabkan oleh pengembangan makro dan pengendali unari yang ditentukan telah dilakukan, semua pengecam dan kata kunci yang tinggal, kecuali benar dan salah, adalah digantikan dengan nombor pp 0

Dalam erti kata lain, selepas pengembangan makro dan langkah prapemprosesan lain, sebarang pengecam atau pemalar yang tidak ditentukan yang muncul dalam keadaan #if digantikan secara automatik dengan nilai 0. Tingkah laku ini konsisten merentas C dan C .

Tingkah laku yang boleh diramal ini membolehkan pembangun menggunakan pemalar tidak ditentukan dengan mudah sebagai bendera atau ruang letak dalam keadaan #jika tanpa mempertaruhkan hasil atau ralat yang tidak ditentukan. Apabila pemalar tidak ditentukan tidak ditakrifkan sebelum fasa prapemprosesan, pengkompil menganggapnya sebagai 0 secara lalai.

Atas ialah kandungan terperinci Adakah Pemalar Tidak Ditakrifkan Menilai kepada 0 dalam #jika Keadaan dalam C dan C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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