Rumah >pembangunan bahagian belakang >C++ >Adakah Permulaan Pembolehubah dengan Nilai Tidak Diisytiharkan Sendiri merupakan Anomali dalam C/C?
Permulaan Pembolehubah Tidak Diisytiharkan: Meneroka Keanehan
Dalam C/C , tingkah laku ingin tahu timbul apabila pembolehubah diisytiharkan dan dimulakan secara serentak menggunakan pembolehubah yang baru diperkenalkan dalam ungkapan permulaan, seperti:
int x = x + 1;
Ini menimbulkan persoalan: Adakah ini gelagat yang dimaksudkan atau anomali penghurai?
Permulaan Pembolehubah,
Sintaks int x = x 1; memulakan pembolehubah x sambil mengisytiharkannya secara serentak. Proses permulaan ini berlaku pada tanda kesamaan (=), membenarkan pembolehubah digunakan di sebelah kanan.
Walau bagaimanapun, melainkan pembolehubah x mempunyai tempoh penyimpanan statik (di luar fungsi), nilai awalnya adalah sewenang-wenangnya, mengakibatkan tingkah laku yang tidak ditentukan.
C Standard,
Piawaian C 03 menentukan:
"Maksud pengisytiharan nama ialah serta-merta selepas pengisytiharannya yang lengkap (...) dan sebelum pemulanya (jika ada)."
Ini membayangkan bahawa dalam ungkapan int x = x;, x kedua dalam permulaan merujuk kepada nilainya yang tidak ditentukan sendiri .
**Keanehan Penghurai atau Tingkah Laku Yang Diniatkan?,
Tingkah laku pelik ini tidak khusus untuk versi GCC. Ia merupakan pelaksanaan piawaian C/C, yang membenarkan permulaan pembolehubah dengan nilainya yang baru diisytiharkan.
Walau bagaimanapun, berhati-hati dinasihatkan apabila menggunakan pendekatan ini, kerana ia berpotensi membawa kepada hasil yang tidak dijangka jika pembolehubah tidak mempunyai tempoh storan statik.
Atas ialah kandungan terperinci Adakah Permulaan Pembolehubah dengan Nilai Tidak Diisytiharkan Sendiri merupakan Anomali dalam C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!