程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-C語言基礎問題.....

c語言-C語言基礎問題.....

編輯:編程綜合問答
C語言基礎問題.....

main(){
char x=0xFFFF;
printf("%d\n",x--);//為什麼輸出-1?
}

最佳回答:


char 內存為1字節 最小值0,最大值255
char 0000 0000b ~ 1111 1111b
0xFFFF = 1111 1111 1111 1111b

0xFFFF賦值給char精度丟失結果就是11111111也就是最大值255,因為char最多只能裝11111111b 也就是0xff
這裡的255是無符號數也就是11111111沒有符號位得出的。但是作為d輸出那麼d的概念是有符號位的
那麼(1)1111111 第一位是符號位。1代表負數
因為是負數又因為數據存儲為補碼形式。轉換成原碼需要取反+1
111 1111取反就000 0000加1 就是000 0001
最後加上符號就是-1了

x++運算是編譯決定的。實際是先使用x值,然後再讓x自增。因此輸出不影響原值

ms03001620
CrazyMonk
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved