为什么 -Wparentheses 不对 if (int x = someFunc()) 发出警告?

Why -Wparentheses doesn't give warning for if (int x = someFunc())?

使用-Wparentheses编译时会给出警告,这是可以理解的

if (myVar= myFunct(param1)) {
     // do some stuff
}

但是当我们在 if 块中声明变量时,编译器不会给出警告。为什么?

if (int myVar= myFunct(param1)) {
     // do some stuff
}

g++(海湾合作委员会) 4.8.5

您不能将声明括在括号中。因此,在声明周围使用额外的括号会产生错误。

至于第一个if语句,则使用了带有赋值运算符的表达式。因此编译器会警告是否有意使用赋值。

在第二种情况下,有一个带有初始值设定项的声明。没有作业。条件的值由初始化后声明的变量的值是否等于零来确定。