У меня есть код как
A = B|C|D|E;
Бросок предупреждения "предлагает круглые скобки вокруг арифметики в операнде |"
Ожидание, что для выражения нужна высокоприоритетная круглая скобка для операторов, попробовало следующие пути:
A=(B|C)|(D|E);
еще один как:
A=(((B|C)|D)|E);
Тем не менее то же предупреждение сохраняется.
Помогите мне в разрешении этого.
Спасибо, Sujatha
B, C, D являются перечислениями, и E является целым числом.
В вашем выражении есть арифметический оператор, который на самом деле не просто B, или это не совсем просто C, и т. Д. Компилятор предлагает заключить в скобки любое выражение, чтобы читатели увидели, что вы написали то, что имели в виду. . Если вы не заключаете в скобки, каждый должен точно помнить, каковы приоритеты, и они должны выяснить, помнили ли вы, когда писали это.
Попробуйте это: (B) | (C) | (D) | (E).
Это странное предупреждение. Вам действительно нужно обращать внимание на старшинство только тогда, когда вы используете разные операторы, и эти операторы имеют разное старшинство. Например, в арифметике умножение имеет более высокий приоритет, чем сложение.
Но в данном случае вы используете только один оператор несколько раз. Побитовое или является ассоциативным и коммутативным ((A | B) | C == A | (B | C)
и A | B == B | A
), поэтому нет причин для предупреждения.