C++ 初始状态条件表达式C++;

C++ 初始状态条件表达式C++;,c++,initialization,conditional-statements,C++,Initialization,Conditional Statements,有人能给我解释一下if语句中的初始化吗 这个问题几乎和我的一样,但我觉得回答不充分 为什么这样做有效 if( int x = 4 ){ std::cout << x; } if(intx=4){ 这不是新的C++17语法。它一直存在 int x=4在第一个示例中,不是init语句,而是您引用的语法规则中的条件 条件可以是表达式或带有初始值设定项的声明(以及一些其他限制)如果它具有后一种形式,则声明在“代码>的分支中引入声明的变量,如果,如果第一个分支被选择,如果声明的变量,上

有人能给我解释一下if语句中的初始化吗

这个问题几乎和我的一样,但我觉得回答不充分

为什么这样做有效

if( int x = 4 ){ 
  std::cout << x;
}
if(intx=4){

这不是新的C++17语法。它一直存在

int x=4
在第一个示例中,不是init语句,而是您引用的语法规则中的条件


条件可以是表达式或带有初始值设定项的声明(以及一些其他限制)如果它具有后一种形式,则声明在“代码>的分支中引入声明的变量,如果,如果第一个分支被选择,如果声明的变量,上下文转换为<代码> BOOL ,初始化后产生<代码>真/代码>。< /P>什么意思?是使用一个支持C++的现代编译器。最新的C++标准,它实现了这个新的语法吗?@ Cigii:我没有说它是有效的。我说“上面没有用”。.但是从阅读标准来看,我最后写的似乎应该是正确的语法。我希望能在理解我引用的3段中的意思方面得到一些帮助。编辑:它在C++17编译器上可以工作。我收回这一点。在@SamVarshavchik上试一下。啊,我看到语法可以工作。我没有使用C++17编译器。我的其余部分是然而,问题依然存在。为什么初始化语句似乎会返回一个值?谢谢!这澄清了很多事情。我完全误解了所写的内容!如果你马上知道的话,你可以参考标准中关于条件必须采取的形式的一段话吗?@user137364谢谢!我很高兴地接受了你的回答r、 这帮了大忙。
std::cout << ( int y = 7 );