0)` Kembalikan Benar dalam C ? " />
(-2147483648 > 0) Mengembalikan Benar dalam C : Penerokaan ke Limpahan Integer dan Tingkah Laku Tidak Ditakrifkan
Tingkah laku if (-2147483648 &ggt; 0) mengembalikan benar dalam C pada mulanya boleh kelihatan berlawanan dengan intuitif, tetapi ia boleh dikaitkan dengan limpahan integer dan gelagat tidak ditentukan.
Limpahan Integer:
-2147483648 ialah nilai minimum untuk integer bertanda 32-bit , dalam C , pemalar tanpa akhiran jenis yang ditetapkan dianggap sebagai nilai literal positif. -2147483648 dianggap sebagai 2147483648, yang melimpahi julat positif int.
Gelagat Tidak Ditakrifkan:
Memandangkan nilai limpahan tidak boleh diwakili dalam julat int, kod tidak ditentukan Ini bermakna pengkompil bebas untuk tafsirkan ungkapan dalam cara yang bergantung kepada pelaksanaan.
Tafsiran Pengkompil:
Dalam sesetengah pelaksanaan, nilai limpahan boleh ditafsirkan sebagai nilai negatif, yang kemudiannya akan menjadi positif selepas menggunakan unary - operator. Tafsiran ini menyebabkan benar dicetak.
Tafsiran Alternatif:
Sebagai alternatif, sesetengah penyusun mungkin cuba menggunakan jenis yang tidak ditandatangani untuk mewakili nilai yang melimpah, yang boleh menyebabkan hasil yang berbeza. Akhirnya, gelagat adalah khusus pelaksanaan dan boleh berbeza-beza merentas penyusun dan platform yang berbeza.
Menghantar ke Integer:
Apabila secara eksplisit menghantar -2147483648 kepada int, gelagat itu menjadi lebih boleh diramal. Pemutus memaksa pengkompil untuk menukar nilai kepada julat int, yang menghasilkan nombor negatif dan akhirnya mencetak palsu.
Kesimpulan:
Kelakuan (- 2147483648 > 0) bergantung pada pelaksanaan pengkompil dan Kelakuan Tidak Ditakrifkan sejauh standard C adalah prihatin. Untuk mengelakkan tingkah laku yang tidak ditentukan, anda dinasihatkan untuk menggunakan pemalar integer dengan jenis akhiran yang sesuai untuk memastikan ia berada dalam julat yang dimaksudkan.
Atas ialah kandungan terperinci Mengapakah `(-2147483648 > 0)` Kembali Benar dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!