[問題] 位元運算子優先權的問題

看板C_and_CPP作者 (總該輪到我的打席了)時間10年前 (2014/03/14 20:47), 編輯推噓2(207)
留言9則, 3人參與, 最新討論串1/1
想問個有關位元運算子優先權的問題 unsigned char a=0xA5; unsigned char b=~a>>4; b裡面的值是00000101還是11110101呢? 書上是寫說>>的優先權高於~,所以先做位元右移再取補數 可是個人的認知以及書上的運算子優先權表上~的優先權都是高於>> 還是說它們都是位元運算子,優先權是一樣的 差別在於由右至左運算或是由左至右運算 謝謝解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.18.107

03/14 21:46, , 1F
程式跑一下就知道結果了
03/14 21:46, 1F

03/14 22:08, , 2F

03/14 22:08, , 3F
03/14 22:08, 3F

03/14 22:10, , 4F
這種寫法最好加上括號最沒有問題,不用在查表看就知
03/14 22:10, 4F

03/14 23:42, , 5F
~a 會被 integral promotion 成 0xFF FF FF 5A (32-bit下)
03/14 23:42, 5F

03/14 23:43, , 6F
此 signed int 值做 >> 4 得 0xFF FF FF F5,放 b 變 0xF5
03/14 23:43, 6F

03/14 23:49, , 7F
...這個a的數字不管operator precedence答案都會一樣吧X
03/14 23:49, 7F

03/14 23:49, , 8F
D
03/14 23:49, 8F
文章代碼(AID): #1J8lfZoS (C_and_CPP)