这是一个有效的循环吗?

Str*_*vaz 3 c++ for-loop c++11

我目前正在学习c ++而且我无法理解for循环的这种语法.

我知道for(<T>: <V>)(for-each)和标准,for(init; cond; incr)但我之前没有遇到过以下情况

for (char ch; cin>>ch && !isdigit(ch); )
Run Code Online (Sandbox Code Playgroud)

如果有人可以在它上面发光,我将不胜感激!

Jam*_*son 7

for (char ch; cin>>ch && !isdigit(ch);    )
     ^^ A ^^  ^^^^^^^^ B ^^^^^^^^^^^^ ^ C ^
Run Code Online (Sandbox Code Playgroud)

答:是init部分,但在这种情况下,它只声明了一个char名为ch
B:条件部分是在每次迭代时执行的

  • 它开始以单个字符作为输入,然后如果它不是数字则继续循环

C:增量部分是空的,依赖条件部分来获得下一个输入(即增量)并导致循环终止