以下代码是否安全并在标准中定义?如果'条件'为真,'i'会增加2吗?
for (size_t i = 0; i < 100; i++) {
do_something;
if (condition)
i++;
}
答案 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++;
}
这是完全合法的。如果我是你,我会添加评论说“跳过下一个”。