位操作过程优先级似乎不正确

时间:2015-12-16 17:19:57

标签: c operators bit-manipulation

x = ++2<<4%3*3 

所以我假设优先:

  1. 列表项
  2. ++ 2
  3. 4%3
  4. 得到的内容(2)* 3。
  5. 然后我想知道++ 2是不是意味着将x增加2?所以答案就是x:S?

    请注意:这不是我试图编译它的代码,我在编写的编码练习中遇到问题,我应该计算x。

2 个答案:

答案 0 :(得分:1)

  

然后我想知道没有+2 ++意味着将x增加2?

没有。 ++2是非法的。预增量只能用于求值为左值的表达式。

答案 1 :(得分:0)

  

但后来我想知道++ 2是不是意味着将x增加2?

没有;它试图增加文字2(这是不允许的)。 x += 2x提高了2.

也许你(或你得到代码的人)打算写

x += 2 << 4 % 3 * 3; // whitespace is your friend, use it

在这种情况下,您要向x添加16:

x += ( 2 << ( ( 4 % 3 ) * 3 ) )
x += ( 2 << ( 1 * 3 ) )
x += ( 2 << 3 )
x += 16