Приоритет операторов C ++ "&" и "->" - PullRequest
3 голосов
/ 01 октября 2008

Учитывая следующее:

&row->count

Будет ли вычисляться & (row-> count) или (& row) -> count будет оцениваться в C ++?

РЕДАКТИРОВАТЬ: Вот отличная ссылка для приоритета C ++.

Ответы [ 7 ]

18 голосов
/ 01 октября 2008

Что касается правил старшинства, мне всегда нравилось то, что выдвинул Стив Уоллин в «Практическом С»:

В пятнадцати правилах предшествования C (&& предшествует раньше, чем || ? :). Практичный программист уменьшает это к двум:

1) Умножение и деление приходят до сложения и вычитания.

2) Поставьте круглые скобки вокруг всего еще.

4 голосов
/ 01 октября 2008
1 голос
/ 01 октября 2008

Могу ли я предложить вам решить такие вопросы с помощью тестовой программы? Это имеет то преимущество, что вы точно будете знать, что ответ верен для вашей реализации, и вы не подвержены риску неправильных ответов.

1 голос
/ 01 октября 2008

C оператор приоритет объясняется здесь

Согласно таблице, -> имеет более высокий приоритет, чем оператор &, поэтому это & ​​(row-> count)

1 голос
/ 01 октября 2008

Это уже спрашивается. Но здесь является ссылкой.

Edit: Хорошо этот вопрос очень похож. И, возможно, есть другой.

0 голосов
/ 01 октября 2008

-> имеет более высокий приоритет, чем & (адрес). Таким образом, ваше выражение будет оценено как & (row-> count)

0 голосов
/ 01 октября 2008

& (row-> счет)

...