我有下面的代码片段,我得到的输出是4.请解释我是否需要我= 2或0.我很困惑。以及输出如何4?在for循环中继续声明,如果条件
int main() {
int i=2;
for(i=0;i<2;i++) {
i=i%3;
if(i==2) {
i++;
continue; }
else
++i;
}
printf("%d",i);
}
我有下面的代码片段,我得到的输出是4.请解释我是否需要我= 2或0.我很困惑。以及输出如何4?在for循环中继续声明,如果条件
int main() {
int i=2;
for(i=0;i<2;i++) {
i=i%3;
if(i==2) {
i++;
continue; }
else
++i;
}
printf("%d",i);
}
循环以i = 0
开头。 if
和else
都是完全一样的东西。增量i
并继续。
如果您使用了一点逻辑,整个块可以减少到i++
(i = i % 3
自i < 2
以来没有效果)。
无法使用您发布的代码获得4
。
当我在gcc中执行这段代码时,我只得到o/p为4。你可以检查。 –
@BabannaDuggani:在'gcc(海湾合作委员会)4.6.1 20110819(预发布)'输出是2. IMO这是PEBKAC最好 – Sujoy
朋友,我真的很抱歉,在for循环它是我<3和错误我写我<2在论坛上。我知道了。谢谢。对不起,无法忍受。 –
输出不能4
为您发布的计划,因为当时的循环断裂的i
值会2
,不4
循环将正好运行一次。
此外,您的代码永远不会输入if
块,因为条件为i==2
,在for
循环内永远不会出现这种情况,因为到那时循环将退出。
所以,你的代码是相同的:
int main() {
int i=2;
for(i=0;i<2;i++) {
i++;
}
printf("%d",i);
}
当我在gcc中执行这段代码时,我只得到o/p为4。你可以检查 –
@BabannaDuggani:你重新检查你的程序。比较你发布的这个程序和你在你的电脑上运行的程序。看看他们是否完全一样! – Nawaz
朋友,我真的很抱歉,在for循环它是我<3和错误我写我<2在论坛。我知道了。谢谢。对不起,无法忍受。 –
不要写这样的代码任何东西,但教育的目的! –
你是什么意思?你声明你的int i并赋值2,然后在下一行你赋0(for循环的初始化部分)。如何获得4作为输出超出了我,但我得到2. – DeCaf
如果你得到4,那么你应该改变你的编译器。 – quasiverse