Rumah > pembangunan bahagian belakang > C++ > Mengapakah `(-2147483648 > 0)` Kembali Benar dalam C ?

Mengapakah `(-2147483648 > 0)` Kembali Benar dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-12-01 18:21:12
asal
617 orang telah melayarinya

Why Does `(-2147483648 > 0)` Kembalikan Benar dalam C ?
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!

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