看板 C_and_CPP 關於我們 聯絡資訊
各位先進好 最近看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