【问题标题】:Why -Wparentheses doesn't give warning for if (int x = someFunc())?为什么 -Wparentheses 不为 if (int x = someFunc()) 发出警告?
【发布时间】:2020-05-03 23:25:49
【问题描述】:

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

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

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

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

g++(GCC) 4.8.5

【问题讨论】:

    标签: c++ if-statement expression declaration g++4.9


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 2011-06-25
      • 1970-01-01
      • 2010-12-11
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多