คำถามติดแท็ก numeric-conversion

6
ทำไมเป็น 0 <-0x80000000
ฉันมีโปรแกรมง่ายๆด้านล่าง: #include &lt;stdio.h&gt; #define INT32_MIN (-0x80000000) int main(void) { long long bal = 0; if(bal &lt; INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); } return 0; } เงื่อนไขif(bal &lt; INT32_MIN )เป็นจริงเสมอ มันเป็นไปได้ยังไงกัน? มันทำงานได้ดีถ้าฉันเปลี่ยนแมโครเป็น: #define INT32_MIN (-2147483648L) ใครสามารถชี้ให้เห็นปัญหา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.