为什么 -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语句,则使用了带有赋值运算符的表达式。因此编译器会警告是否有意使用赋值。
在第二种情况下,有一个带有初始值设定项的声明。没有作业。条件的值由初始化后声明的变量的值是否等于零来确定。
使用-Wparentheses编译时会给出警告,这是可以理解的
if (myVar= myFunct(param1)) {
// do some stuff
}
但是当我们在 if 块中声明变量时,编译器不会给出警告。为什么?
if (int myVar= myFunct(param1)) {
// do some stuff
}
g++(海湾合作委员会) 4.8.5
您不能将声明括在括号中。因此,在声明周围使用额外的括号会产生错误。
至于第一个if语句,则使用了带有赋值运算符的表达式。因此编译器会警告是否有意使用赋值。
在第二种情况下,有一个带有初始值设定项的声明。没有作业。条件的值由初始化后声明的变量的值是否等于零来确定。