Давайте две строки кода:
&car->speed
&(car->speed)
speed
?Эти две строки эквивалентны? Получу ли я в обоих случаях обращение к скорости?
Да. ->
имеет более высокий приоритет, чем унарный &
, следовательно &car->speed
а также &(car->speed)
эквивалентны.
Если они являются эквивалентами, что лучше выбрать в качестве соглашения о кодировании?
Идите со вторым, поскольку он показывает предполагаемое поведение, которое вас интересует в адресе speed
,
Этот вопрос уже задавался здесь несколько раз. Операторы выражений Postfix имеют более высокий приоритет, чем унарные операторы. Итак, эти два выражения
&car->speed
&(car->speed)
эквивалентны.
Или другой подобный пример с другим унарным оператором!
!car->speed
!(car->speed)
Что касается соглашения о кодировании, я бы предпочел
&car->speed
а если хочешь амперсандифицировать car
в одиночку, используйте это:
( &car )->speed