Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Pembolehubah Konst dalam C Mempunyai Dua Nilai Berbeza?

Bagaimanakah Pembolehubah Konst dalam C Mempunyai Dua Nilai Berbeza?

Linda Hamilton
Lepaskan: 2024-11-28 21:17:14
asal
175 orang telah melayarinya

How Can a Const Variable in C   Have Two Different Values?

Bagaimana Tingkah Laku Tidak Ditakrifkan Menjelaskan Dua Nilai Berbeza untuk Pembolehubah

Walaupun ia kelihatan paradoks, pembolehubah boleh dilakukan pada alamat yang sama untuk menghasilkan dua nilai yang berbeza. Fenomena ini boleh dikaitkan dengan gelagat tidak ditentukan.

Dalam coretan kod yang disediakan, integer malar (a1) ditakrifkan dan penunjuk malar (b1) diberikan alamatnya. Selepas itu, penunjuk char (c1) dipancarkan daripada b1. Dengan mengubah suai c1, nilai a1 diubah dengan berkesan, walaupun diisytiharkan sebagai pemalar. Menghantar c1 kembali ke penunjuk integer (t) mendedahkan nilai yang diubah ini.

Tindakan ini membentuk gelagat yang tidak ditentukan, kerana cuba mengubah suai pembolehubah const melanggar piawaian C. Seperti yang dinyatakan dalam bahagian 7.1.6.1, tingkah laku sedemikian boleh membawa kepada keputusan yang tidak dapat diramalkan, termasuk hasil yang kelihatan mustahil seperti yang diperhatikan.

Standard dengan jelas memberi amaran terhadap tindakan sedemikian:

  • Seksyen 1.3.24 (Tingkah Laku Tidak Ditakrifkan): "... tingkah laku tidak ditentukan berjulat daripada mengabaikan situasi sepenuhnya dengan keputusan yang tidak dapat diramalkan ... untuk menamatkan terjemahan atau pelaksanaan (dengan pengeluaran mesej diagnostik)."
  • Bahagian 7.1.6.1 Kelayakan cv (perenggan 4): "... sebarang percubaan untuk mengubah suai objek const ... menghasilkan undefined tingkah laku."

Oleh itu, walaupun tingkah laku yang diperhatikan mungkin kelihatan ingin tahu, ia bukanlah pengoptimuman pengkompil tetapi sebaliknya merupakan gejala tingkah laku tidak ditentukan yang timbul daripada percubaan untuk mengubah suai pembolehubah malar.

Atas ialah kandungan terperinci Bagaimanakah Pembolehubah Konst dalam C Mempunyai Dua Nilai Berbeza?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan