为什么如果结束我的声明

时间:2014-05-23 15:36:06

标签: c if-statement while-loop

我目前正在learn-c.org学习非常基本的C(我知道PHP / HTML / VBasic),但我很难理解为什么if语句会导致{{1}离开的陈述。该网站说while导致while循环重新启动,但是如果if语句为真,即使省略这个也会使我的while循环返回到开头。

代码如下:

continue

我希望while语句的第一轮命中第一个int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4}; int i = 0; while (i<10) { if(array[i] < 5){ i++; } if(array[i] > 10){ break; } printf("%d\n",array[i]); i++; } (因为if将为1,但继续进行,因为没有任何内容表示&#34;停止循环& #34;,除非我将array[i]放在continue;之后,为什么会按i++;语句进行while循环?这是否意味着我不能有多个if {#1}}在C while循环中被击中(我确信你可以在PHP中,我主要在PHP中使用if)?

5 个答案:

答案 0 :(得分:2)

while循环正如所写。

我是0

第一个if为true,因为array [0]为1所以i增加到1

第二个if为false,因为数组[1]为7

printf显示7

我增加到2

回到顶部

第一个if为true,因为array [2]为4,所以i增加到3

第二个if为false,因为数组[3]为5

printf显示5

我增加到4

回到最顶端......

答案 1 :(得分:1)

break指令将立即结束它所调用的任何循环,这就是你的while循环退出的原因。

continue没有退出循环,它结束当前迭代并开始下一个循环,#34;继续&#34;循环。

答案 2 :(得分:0)

  

break语句结束最近的封闭循环或条件语句的执行。   引自msdn   http://msdn.microsoft.com/en-us/library/wt88dxx6.aspx

当while函数到达时

if(array[i] > 10){
break;

和i等于7 break命令将结束while

的执行

继续:

  

continue语句将控制传递给最近的封闭do,for或while语句的下一次迭代,绕过do,for或while语句体中的任何剩余语句。   引自msdn http://msdn.microsoft.com/en-us/library/0ceyyskb.aspx

如上面的引文中所述,continue语句将跳过(绕过)while中的所有内容(在您的情况下)并开始while的下一次迭代

答案 3 :(得分:0)

来自:break Statement (C)您可以阅读:

The break statement is frequently used to terminate the processing of a 
particular case within a switch statement. Lack of an enclosing iterative or
switch statement generates an error. 

即。这将终止while循环。如果条件适用于你的情况。

你所说的continue声明赢了重启while循环,它将转到下一个元素。< / p>

在您的代码中,您有:

if(array[i] > 10){
    break;
}

对于11,它将完成while循环,但如果您使用continue,请执行以下操作:

if(array[i] > 10){
    i++;
    continue;
}

将&#34;跳跃&#34; 11并转到6

答案 4 :(得分:0)

在while中使用break导致while循环,当我变为7(array [7] = 11> 10)终止它时,不会在屏幕上打印数组的其余元素