c++ - 增量语句的目的是什么?

标签 c++ loops for-loop while-loop increment

为什么增量语句是 C++ 中 for 循环中的一件事?对我来说这似乎是多余的,因为您可以简单地将增量放在条件代码中。我在这里误解了一些重要的事情吗?

为了更好地说明我的问题,我添加了一些伪代码: ->

和有什么区别
for( int a = 10; a < 20; a = a + 1 )
{
    cout << a << endl;
}

for( int a = 10; a < 20;)
{
    a = a + 1
    cout << a << endl;
}

最佳答案

有时不仅仅是方便。

这些是等价的:

for (int a = 10; a < 20;  a = a + 1) {
    cout << a << endl;
}

for (int a = 10; a < 20;  ) {
    cout << a << endl;
    a = a + 1;
}

但是,这些不是:

// 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;
}

由于您来自 python,惯用 for 循环就像 python range,但更强大。你的 C for 循环,用 python 表示是:

for a in range(10,20,1)

将其表达为更惯用:

for (a = 10;  a < 20;  a += 1)

因为循环增量是1,所以惯用的做法是:

for (a = 10;  a < 20;  ++a)

但是,for 循环是:

for ([init_stmt];  [test_stmt];  [incr_stmt])

任何 *_stmt 都可以是复合的:

for (x = 0, y = 0;  x < 10;  ++x, y += 2)

关于c++ - 增量语句的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34458194/

相关文章:

c++ - 底层段寄存器的线程本地实际使用

c++ - 模板类运算符重载多个类型名 C++

r - R中的嵌套foreach循环,其中内部循环返回一个矩阵

c++ - 多个嵌套 for 循环与单个 for 循环

c++ - cuda, pycuda -- 如何写复数 -- 错误 :class "cuComplex" has no member "i"

c++ - Arduino 循环错误 : Waits several seconds to respond to input change

python - 区分循环中的多个导出点

javascript - 有没有办法在使用 javascript 循环迭代时为每个 html 元素调用一个函数

c++ - 循环性能内部评估的 bool 条件

c++ - 从 vector 中删除项目,而在 C++11 范围 'for' 循环中?