5

让我们有两行代码:

&car->speed
&(car->speed)
  1. 这两条线是等价的吗?在这两种情况下我都会得到地址speed吗?
  2. 如果它们是等价的,那么选择什么作为编码约定更好?
4

2 回答 2

9

这两条线是等价的吗?在这两种情况下我都会得到速度的地址吗?

是的。->具有比 unary 更高的优先级&,因此&car->speed&(car->speed)是等价的。

如果它们是等价的,那么选择什么作为编码约定更好?

选择第二个,因为它显示了您对 的地址感兴趣的预期行为speed

于 2014-09-18T17:52:19.630 回答
-2

这个问题已经在这里问过好几次了。后缀表达式运算符的优先级高于一元运算符。所以这两个表达式

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

是等价的。

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

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

至于编码约定,我更喜欢

&car->speed

如果您想car单独进行合并,请使用以下命令:

( &car )->speed
于 2014-09-18T17:56:46.200 回答