Walaupun nampaknya tidak penting, limpahan integer dalam kod yang disediakan membawa kepada akibat yang ketara: nilai pecah pembolehubah gelung.
Tingkah laku yang diperhatikan di sini berpunca daripada tingkah laku tidak ditentukan akibat limpahan integer yang ditandatangani, seperti yang dinyatakan dalam draf C 11 N3337:
"Jika semasa penilaian ungkapan, hasilnya tidak ditakrifkan secara matematik atau tidak dalam julat
nilai yang boleh diwakili untuk jenisnya, tingkah laku itu tidak ditentukan."
Dengan tingkah laku yang tidak ditentukan ini, apa sahaja boleh berlaku, menjadikan analisis mengapa secara khusus tingkah laku ini berlaku tidak bermakna di bawah C peraturan.
Penyenaraian pemasangan kod mendedahkan penambahan eksplisit yang menyebabkan limpahan, dengan berkesan mengubah gelung menjadi gelung yang tidak terhingga. Tingkah laku ini disebabkan oleh andaian bahawa i adalah kurang daripada atau sama dengan 2 untuk tujuan pengoptimuman, berdasarkan kehadiran kelakuan tidak ditentukan untuk nilai yang lebih besar daripada 2. Akibatnya, keadaan gelung dianggap sentiasa benar.
Untuk membetulkan isu ini dan memastikan pelaksanaan yang betul, adalah penting untuk menghapuskan tingkah laku yang tidak ditentukan dengan menyemak semula syarat untuk memastikan ia berakhir
Atas ialah kandungan terperinci Mengapa Limpahan Integer Bertanda Menyebabkan Gelung Tak Terhingga dalam Kod C Ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!