如何修复警告:'&&'在' ||'

时间:2015-11-15 05:44:18

标签: c gcc

这是GCC的问题吗?我试过在Windows上运行它并没有引发这个警告。有没有办法(插入括号除外)?

#include <stdio.h>

int x, y;

int main (void)
{
x = 3;
y = 7;

if ((y < 2) || (y > 5) && (x < 12)) {
    printf ("Yes\n");
} else
    printf ("Nope\n");
return 0;
}

结果:

/Users/filename:18:28: warning: '&&' within '||' [-Wlogical-op-parentheses]
    if ((y < 2) || (y > 5) && (x < 12)) {
                ~~ ~~~~~~~~^~~~~~~~~~~
/Users/filename:18:28: note: place parentheses around the '&&' expression to
      silence this warning
    if ((y < 2) || (y > 5) && (x < 12)) {
                           ^
                   (                  )

1 个答案:

答案 0 :(得分:3)

您的回答是here

  

自然倾向是从左到右阅读,并且很容易忘记运算符优先级。那就是说,这只是一个警告,如果你知道自己在做什么,而你自己的风格允许它,请随意压制它。

并压制它:

  

对于那些想要压制它的人,请将-Wno-logical-op-parentheses附加到您的构建系统的 CFLAGS