Adakah Permulaan Pembolehubah dengan Nilai Tidak Diisytiharkan Sendiri merupakan Anomali dalam C/C?

DDD
Lepaskan: 2024-11-04 13:03:02
asal
765 orang telah melayarinya

Is Variable Initialization with its Own Undeclared Value an Anomaly in 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;
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!