C ++ 17 if 语句带有初始值设定项但没有条件

2 c++ if-statement c++17

在 c++17 中,您可以执行以下操作:

if ( init-statement(optional); condition )
Run Code Online (Sandbox Code Playgroud)

根据https://en.cppreference.com/w/cpp/language/if

但是我的编译器(vs2019)允许

if ( init-statement )
Run Code Online (Sandbox Code Playgroud)

其中 init 语句也是条件。我找不到任何地方都有记录,这真的保证有效吗?

Nic*_*las 8

在 C++ 中,可以进行很多condition你不希望在那里被允许的事情。甲condition例如可以是int i = 20int i = 20解析为可以根据上下文转换为布尔值并进行测试的值。

所以并不是你的编译器允许init-statement没有condition. 正是 C++ 从一开始就允许condition语法包括声明变量,而您的代码只是使用它。