循环c ++中的额外增量

时间:2014-10-01 13:08:28

标签: c++ for-loop

以下代码是否安全并在标准中定义?如果'条件'为真,'i'会增加2吗?

for (size_t i = 0; i < 100; i++) {
    do_something;
    if (condition)
        i++;
}

3 个答案:

答案 0 :(得分:3)

当然。它没有任何问题 - 语法上。你甚至可以这样做:

int i = 0;
for (;;) {
    if (i >= 100) {

      break;
    }
    ++i;
}

此代码相当于

int i = 0;
while(true) {
    if (i >= 100) {
        break;
    }
    ++i;
}

此外 - 您几乎可以将任何有效代码放入for语句中。 E.g。

for (do_something_begin(); some_condition(); do_something_end()) {
     CODE;
}

以及编译器对此代码的作用是这样的:

do_something_begin()
do {
    CODE;
    do_something_end();
} while (some_condition())

答案 1 :(得分:0)

如果我从0开始并且条件为真然后i = 1,那么当循环再次迭代时,我将增加1到2,所以是的。

答案 2 :(得分:0)

你刚写了

size_t i = 0;

while (i < 100) {
    do_something;
    if (condition)
        i++;
    i++;
}

这是完全合法的。如果我是你,我会添加评论说“跳过下一个”。