循环和分支及break和continue

来源:互联网 发布:sql order by limit 1 编辑:程序博客网 时间:2024/05/18 01:47

循环和分支及break和continue

       switch,if…else…,for,while,break和continue,这些都是很常用的关键字,但是还是有很多细节之处需要注意。

1.      switch

(1)  switch(X)其中X必须是整型数(包括枚举和字符)。

(2)  在switch中case是一个真正意义上的标号,根据switch(X)中X参数去选择执行开始的位置(类似与goto语句的跳转),而程序的控制流会径直通过case标号而不会受到任何影响,想要在switch语句块结束前跳出要用到“break”。(以下程序是利用break控制switch的结束)

switch (nFlag)

{

case 1:

        printf("1");

        break;

case 2:

        printf("2");

case 3:

        printf("3");

}

//nFlag=1,输出1

//nflag=2,输出23

2.      if…else…

(1)  关于if…else…要比较注意的是多个使用该语句时的else的悬挂问题(尤其注意在没有明确用“{}”花括号指明语句所属时),如下。

if (0 == x)

      if (0 == y)   error();

else

    z = x + y;

不要被格式迷惑,以上程序中else其实是与if(0==y)相配套的,即与它最近的if相匹配。(注意最好用花括号指明)

3.      break

(1)  break在switch中的使用(见switch)。

(2)  break在循环语句中的使用,是指跳出终止本层循环。如下,

4.      continue

(1)  continue在for和while语句中细微区别:

(2)  continue与break在循环中使用的区别:continue是指终止本次(或本轮)的循环(并没有跳出该循环),而break是指终止本层的循环(即跳出当前层的循环)。

5.      循环语句的注意点

(1)  多层循环中尽量用长循环在内短循环在外提高效率。(减少循环之间的跳转)

(2)  在使用for循环时,最好不要在循环体内改变循环变量或条件。尽量避免如下程序的出现,该循环难判断循环的终止。(如果是算法本身实现要改变循环变量或条件,最好写清原因)

for (i = 0; i < length+10; i++)

{

    ................

    length = j + 1;   //length的值受其他值影响,而length影响着判断条件

    i = i + 2;         //循环内改变了循环变量的值

    ................

}

(3)  goto语句在现在经常被避免使用,不过在多层的嵌套的循环中,要跳出两层或更多层的循环时,goto可以发挥很好的作用。

0 0
原创粉丝点击