使用带有或不带支架的C&符号

时间:2014-09-18 17:50:51

标签: c++ c operator-precedence ampersand addressof

我们有两行代码:

&car->speed
&(car->speed)
  1. 这两行是否相同?我是否会将这两种情况都解决到speed
  2. 如果它们是等价的,那么最好选择哪种编码约定?

2 个答案:

答案 0 :(得分:8)

  

这两行是否相同?我会在两种情况下都能达到速度吗?

是。 ->的优先级高于一元&的优先级,因此&car->speed&(car->speed)是等效的。

  

如果它们是等价的,那么最好选择哪种编码约定?

使用秒,因为它显示了您对speed地址感兴趣的预期行为。

答案 1 :(得分:-2)

这个问题已在这里多次提出过。 Postfix表达式运算符的优先级高于一元运算符。所以这两个表达式

&car->speed
&(car->speed)

是等价的。

或者与其他一元运算符的另一个类似的例子!

!car->speed
!(car->speed)

至于编码惯例,我更喜欢

&car->speed

如果你想单独放大car,请使用:

( &car )->speed