[問題] logic shift 操作,結果與預期不同
開發平台(Platform): (Ex: Win10, Linux, ...)
win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC c99
問題(Question):
我想做個邏輯位移,但結果怪怪的
預期的正確結果(Expected Output):
0x00000000
錯誤結果(Wrong Output):
0xFFFFFFFF
程式碼(Code):(請善用置底文網頁, 記得排版)
比如說:
int left = 32;
printf("0x%08X\n", 0xffffffff << left);
這樣會print出 0xFFFFFFFF
但是若我換成
printf("0x%08X\n", 0xffffffff << 32);
則會print出 0x00000000
why??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.148.138
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1494992524.A.F85.html
→
05/17 11:57, , 1F
05/17 11:57, 1F
→
05/17 11:59, , 2F
05/17 11:59, 2F
推
05/17 12:16, , 3F
05/17 12:16, 3F
推
05/18 02:47, , 4F
05/18 02:47, 4F
→
05/18 02:47, , 5F
05/18 02:47, 5F
→
05/18 02:48, , 6F
05/18 02:48, 6F
→
05/18 02:52, , 7F
05/18 02:52, 7F
→
05/18 02:56, , 8F
05/18 02:56, 8F
→
05/18 02:57, , 9F
05/18 02:57, 9F
→
05/18 02:57, , 10F
05/18 02:57, 10F
推
05/19 02:00, , 11F
05/19 02:00, 11F