作者roger29 (=======中間選民=======)
看板C_and_CPP
標題[問題] 關於long和unsigned long
時間Thu Dec 26 20:39:38 2013
各位先進好
最近看K & R的The C programming language(ed 2)
在p.44的地方有講到關於unsigned operands的conversion rule
書上舉了一個例子
假設int是16 bits long是32bits
那麼-1L < 1U 且 -1L > 1UL
書上說 -1L is promoted to unsigned long and thus appears to be a large
positive number
實在是不太懂為何? 有人可以解釋一下為什麼 -1L會變成很大的正整數嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.187.215
→ baiypwup:"-1L",也就是0xFFFFFFFFFFFFFFFF,會變成以下這個數, 01/11 23:41
→ baiypwup:18446744073709551615=2^64-1,所以就很大啦 01/11 23:43
→ baiypwup:(如果是64 bit系統,sizeof(long)==8的話) 01/11 23:44
→ baiypwup:啊對不起沒有看到假設內容…不過,C++標準文檔相應章節應 01/11 23:52
→ baiypwup:當還适用(N3485 4.5 Integral Promotions) 01/11 23:52