优先权! * ++需要括号?

时间:2016-07-01 12:28:50

标签: c operator-precedence

是C表达式:

!(*(++buffer))

同样的事情:

!*++buffer

3 个答案:

答案 0 :(得分:5)

是的,它们基本相同。这里的优先级没有出现,因为表达式是明确的。

Deference ++取决于!的结果,*++buffer的参数是表达式(...)的结果。所以任何其他订单根本不可能。 (如果您不相信,请尝试将括号 @ProxyStandard interface MyProxy extends Proxy<ApplicationPresenter> { } @Inject ApplicationPresenter(){...} @Override protected void onBind() { } @Override protected void onReveal() { } @Override protected void onReset() { Window.alert("reset"); } 置于表达式结果不同的方式中)

为了便于阅读,你可以加上一些括号,但它的风格比任何要求都重要。

答案 1 :(得分:2)

如果您不得不问,请使用括号。

没有任何意义让后来的程序员感到担忧和困惑。如果您不确定,只需使用括号 - 他们免费

答案 2 :(得分:1)

此处不需要括号。

根据operator precedence table,一元++前缀运算符,一元indirecton运算符*和一元逻辑NOT运算符!都具有相同的优先级,他们从右到左联系。

此外,由于buffer是较大表达式中包含的唯一基本表达式,因此运算符没有其他方式可以匹配。