10

我有一个类似的代码

A = B|C|D|E;

抛出警告“建议在 | 的操作数中使用算术括号”

期望表达式需要运算符的高优先级括号,尝试了以下方法:

A=(B|C)|(D|E);

还有一个:

A=(((B|C)|D)|E);

同样的警告仍然存在。

请帮我解决这个问题。

谢谢, 苏加塔

B、C、D 是枚举,E 是整数。

4

2 回答 2

14

你的表达式中有一些算术运算符不是真正简单的 B,或者不是真正简单的 C 等。编译器建议你给任何一个表达式加上括号,这样读者就会看到你写的是你的意思。如果你不加括号,每个人都必须准确地记住优先级是什么,并且他们必须弄清楚你是否记得你写它的时候。

试试这个:(B)|(C)|(D)|(E)。

于 2010-06-04T06:55:33.337 回答
2

这是一个奇怪的警告。当您使用不同的运算符并且这些运算符具有不同的优先级时,您才真正需要注意优先级。例如,算术乘法的优先级高于加法。

但在这种情况下,您多次只使用一个运算符。按位 or 是关联的和可交换的 ( (A | B) | C == A | (B | C)and A | B == B | A) 所以真的没有理由发出警告。

于 2010-06-04T07:13:53.843 回答