開發平台(Platform): (Ex: Win10, Linux, ...)
Lubuntu (Linux)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
n/a
問題(Question):
大家好,新手自學
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned int a = 10;
signed int b = 10;
a = ~a;
b = ~b;
printf("a : %d\n");
printf("b : %d]n");
}
output :
a = -11
b = -11
這邊的問題是有關於 a
a = 10 , in bit 應該是
00000000 00000000 00000000 00001010
a = ~a 之後
11111111 11111111 11111111 11110101
^
not sign bit
我這邊一開始設定 a 是 unsigned int
也就是應該第 32 bit 應該不是 sign bit
所以 print out in %d 之後預期的結果應該是 unsigned int 的 最大值 - 10
可是為什麼變成了 -11
再請各位前輩解惑了
謝謝
餵入的資料(Input):
資料如上
預期的正確結果(Expected Output):
預期為 unsigned int 最大值 - 11
錯誤結果(Wrong Output):
no error code
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
code 如上
補充說明(Supplement):
n/a