提问人:John Cooper 提问时间:1/17/2020 最后编辑:Vlad from MoscowJohn Cooper 更新时间:5/8/2020 访问量:65
为什么 -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++(GCC)4.8.5版本
答:
0赞
Vlad from Moscow
1/17/2020
#1
您不得将声明括在括号内。因此,在声明两边使用额外的括号会生成错误。
对于第一个 if 语句,则使用带有赋值运算符的表达式。因此,编译器会警告是否打算使用赋值。
在第二种情况下,有一个带有初始值设定项的声明。没有分配。条件的值由初始化后声明的变量的值是否等于零来确定。
评论