我知道 c 在二進制補碼中作業,但我仍然無法理解下面的程式如何給我 2147483647 作為輸出。
#include<stdio.h>
int main(){
int a=-2147483648;
a-=1;
printf("%d",a);
}
uj5u.com熱心網友回復:
因為int不能包含值-2147483648 - 1,所以它會導致整數溢位,從而導致未定義的行為。未定義的行為可能導致任何結果。
uj5u.com熱心網友回復:
二進制補碼中的最小數字是 100000...0 如果你減少一個,這意味著計算機將添加 -1 到它 -1 二進制補碼是:11111...1 所以如果你添加它們,答案是 0111111... 1 是最大整數或 2147483647
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364029.html
標籤:C
