Использование C амперсанд с или без скобок

Давайте две строки кода:

&car->speed
&(car->speed)
  1. Эти две строки эквивалентны? Получу ли я в обоих случаях обращение к speed?
  2. Если они являются эквивалентами, что лучше выбрать в качестве соглашения о кодировании?

4

Решение

Эти две строки эквивалентны? Получу ли я в обоих случаях обращение к скорости?

Да. -> имеет более высокий приоритет, чем унарный &, следовательно &car->speed а также &(car->speed) эквивалентны.

Если они являются эквивалентами, что лучше выбрать в качестве соглашения о кодировании?

Идите со вторым, поскольку он показывает предполагаемое поведение, которое вас интересует в адресе speed,

8

Другие решения

Этот вопрос уже задавался здесь несколько раз. Операторы выражений Postfix имеют более высокий приоритет, чем унарные операторы. Итак, эти два выражения

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

эквивалентны.

Или другой подобный пример с другим унарным оператором!

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

Что касается соглашения о кодировании, я бы предпочел

&car->speed

а если хочешь амперсандифицировать car в одиночку, используйте это:

( &car )->speed
-2

По вопросам рекламы [email protected]