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


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

所以我假设按优先级:

  1. 列表项
  2. ++2
  3. 4%3
  4. 什么是进去(2(*3。

但是后来我想知道++2不是意味着将x增加2吗? 所以答案是 x :S ?

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

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

不。 ++2是非法的。前增量只能与计算结果为左值的表达式一起使用。

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

否;它尝试递增文字2(这是不允许的(。 x += 2 x增加 2。

也许你(或你从那里获得代码的人(打算写

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

在这种情况下,您将 16 添加到x

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

最新更新