声明不能在条件运算符表达式内发生?

use*_*376 1 c++ language-lawyer

我想知道为什么我不能在下面的表达式中声明一个变量.

string finalgrade = ( ( int grade = 100 ) < 60 ) ? "fail" : "pass"; 
Run Code Online (Sandbox Code Playgroud)

虽然我们可以在for语句中声明一个变量.

Ker*_* SB 5

在C++中,声明只允许在声明语句中和控制结构中if,while并且for.

由于声明的目的是引入一个名称,因此当一个包含范围的名称可见时,声明才有意义,并且这些选项只是明智的选择.声明语句将名称引入到周围的范围中,并且三个控制结构各自包含它们自己的内部范围,相应的声明引入该范围.