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:
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!