Jes*_*ess 2 c++ loops for-loop increment while-loop
为什么增量语句在C++中的for循环中是一个东西?对我而言似乎是多余的,因为你可以简单地将增量放在条件代码中.我在这里误解了一些重要的事情吗?
为了更好地说明我的问题,我包括一些伪代码: - >之间有什么区别
for( int a = 10; a < 20; a = a + 1 )
{
cout << a << endl;
}
Run Code Online (Sandbox Code Playgroud)
和
for( int a = 10; a < 20;)
{
a = a + 1
cout << a << endl;
}
Run Code Online (Sandbox Code Playgroud)
它有时不仅仅是方便.
这些是等价的:
for (int a = 10; a < 20; a = a + 1) {
cout << a << endl;
}
for (int a = 10; a < 20; ) {
cout << a << endl;
a = a + 1;
}
Run Code Online (Sandbox Code Playgroud)
但是,这些不是:
// this works ...
for (int a = 10; a < 20; a = a + 1) {
if (blah ...)
continue;
cout << a << endl;
}
// this doesn't
for (int a = 10; a < 20; ) {
if (blah ...)
continue;
cout << a << endl;
a = a + 1;
}
Run Code Online (Sandbox Code Playgroud)
因为你是来自python,一个惯用的 for循环就像一个python range
,但更强大.用Cthon表示的C for循环将是:
for a in range(10,20,1)
Run Code Online (Sandbox Code Playgroud)
将此表达为以下内容更为惯用:
for (a = 10; a < 20; a += 1)
Run Code Online (Sandbox Code Playgroud)
因为循环增量是1
,所以这样做更加惯用:
for (a = 10; a < 20; ++a)
Run Code Online (Sandbox Code Playgroud)
但是,for循环是:
for ([init_stmt]; [test_stmt]; [incr_stmt])
Run Code Online (Sandbox Code Playgroud)
任何*_stmt都可以复合:
for (x = 0, y = 0; x < 10; ++x, y += 2)
Run Code Online (Sandbox Code Playgroud)