2011-10-16 85 views
0

我有下面的代码片段,我得到的输出是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); 
} 
+2

不要写这样的代码任何东西,但教育的目的! –

+3

你是什么意思?你声明你的int i并赋值2,然后在下一行你赋0(for循环的初始化部分)。如何获得4作为输出超出了我,但我得到2. – DeCaf

+3

如果你得到4,那么你应该改变你的编译器。 – quasiverse

回答

6

循环以i = 0开头。 ifelse都是完全一样的东西。增量i并继续。
如果您使用了一点逻辑,整个块可以减少到i++i = i % 3i < 2以来没有效果)。

无法使用您发布的代码获得4

+0

当我在gcc中执行这段代码时,我只得到o/p为4。你可以检查。 –

+2

@BabannaDuggani:在'gcc(海湾合作委员会)4.6.1 20110819(预发布)'输出是2. IMO这是PEBKAC最好 – Sujoy

+1

朋友,我真的很抱歉,在for循环它是我<3和错误我写我<2在论坛上。我知道了。谢谢。对不起,无法忍受。 –

0

输出不能4为您发布的计划,因为当时的循环断裂的i值会2,不4循环将正好运行一次

此外,您的代码永远不会输入if块,因为条件为i==2,在for循环内永远不会出现这种情况,因为到那时循环将退出。

所以,你的代码是相同的:

int main() { 
    int i=2; 
    for(i=0;i<2;i++) { 
     i++; 
    } 
    printf("%d",i); 
} 
+0

当我在gcc中执行这段代码时,我只得到o/p为4。你可以检查 –

+2

@BabannaDuggani:你重新检查你的程序。比较你发布的这个程序和你在你的电脑上运行的程序。看看他们是否完全一样! – Nawaz

+2

朋友,我真的很抱歉,在for循环它是我<3和错误我写我<2在论坛。我知道了。谢谢。对不起,无法忍受。 –