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

stv*_*per 5 c c++ addressof operator-precedence ampersand

我们有两行代码:

&car->speed
&(car->speed)
Run Code Online (Sandbox Code Playgroud)
  1. 这两条线是否相同?我是否会在两种情况下都进入speed
  2. 如果它们是等价的,那么最好选择哪种编码约定?

hac*_*cks 8

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

是.->具有比一元的高优先&,因此&car->speed&(car->speed)是相等的.

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

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

  • 我自己会选择第一个:通常,中等的C(或C++)程序员应该知道`[]`以及` - >`在他的睡眠中绑定更强的`&`. (5认同)
  • 我非常同意@Deduplicator.多余的括号很烦人.它们花费了阅读时间(我希望额外的括号可以*否决*正常的优先级) (3认同)
  • @ThomasMatthews:只有初学者正在阅读代码时才会存在歧义.接下来他们会找出优先权和中提琴; 现在他们知道了.如果我能避免它,我不会写出神秘的代码,但我也不会满足那些不懂语言的程序员. (3认同)
  • 我同意@haccks.当存在轻微的歧义时,请使用括号来明确.键入或编译两个字符所花费的时间对于由于模糊而导致的缺陷浪费的时间是微不足道的. (2认同)