详解C语言语句

空语句

空语句本身并不执行任何任务,但有时还是有用的。它所适用的场合就是语法要求出现一条完整的语句,但并不要求它执行任何任务。

表达式语句

C语言并不存在专门的赋值语句,那它是如何进行赋值的?答案是赋值就是一种操作,就像加减法一样,所以赋值就在表达式内进行。
你只要在表达式后面加上一个分好,就可以把表达式转化为语句,所以下面两个语句是表达式语句而不是赋值语句。

x = y + 3;
ch = getchar();

if语句

if语句的语法如下

if(expression)
  statement;    
else 
  statement;

如果expression的值为真,纳米就执行第一个statement,佛则就跳过它。如果存在else语句,它后面的statement只有当expression的值为假的时候执行。

在C语言中的if语句与其它语言中的if语句,只存在一个差别C并不具备布尔类型,而是用整数来替代,这样expression看可以是任何能够产生整型结果的表达式——零标识,非零表示
注意:else子句从属于最靠近它的不完整if语句

while语句

while(expression)
  statement;

break语句和continue语句

在while循环语句中可以使用break和continue语句,其中break语句用于永久终止循环,在执行完break语句后,执行流执行的下一条语句就是循环正常终止后应该执行的语句。
continue语句用于永久终止当前循环,在执行完continue语句后,执行流接下来就是重新测试表达式的值,决定是否据需执行循环。
这两条语句的任何一条如果出现于嵌套的内部循环,它只对最内层的循环起作用,你无法使用break和continue语句对最外层的语句起作用。

for语句

for(expression1;expression2;expression3)
  statement;

相当于while语句的下列表现形式

 experssion1
while(expression2)
{
  statement;
  expression3;
}

其中statement称为循环体,expression1称为初始化部分,expression2称为条件部分,expression3称为调整部分,它在循环体执行之后,条件部分执行之前执行,三个部分都是可选部分,三个都省略,表示条件适中为真。

for语句和while语句执行过程中出现continue语句的区别:
1.在for语句中,continue语句直接跳过循环体的剩余部分,直接回到调整部分。
2.在while语句中,调整部分属于循环体的一部分,所以continue将会把它也跳过。

do语句

do
  statement;
while(expression);

do语句和很像while语句,再是它的测试条件在循环体执行一次之后才进行执行,所以这种循环体至少被执行一次。

switch语句

switch(expression)
{
    statement_list;
}

贯穿于语句列表之间的是一个或多个case标签,形似如下:

case constant-expression:

每个case标签必须具有一个唯一的值,常量表达式是指在编译期间进行求值的表达式,它不能是任何变量。这里的case标签并不是把语句列表划分成几个部分,它们只是确定语句列表的进入点。

switch语句中的break语句

如果在switch语句中使用break语句,执行流会立即跳到语句列表的末尾,break语句的实际效果是把语句列表划分成不同的部分。
continue在switch语句种不起任何作用。

default语句

default:

如果表达式的值与所有的case标签都不匹配,可以在任何一个可以出现case语句的位置添加一个default语句

goto 语句

goto  语句标签

要使用goto 语句你必须在你希望跳转的语句前面加上语句标签,语句标签就是标识符后面加个冒号(:)

goto 语句很适合一种情况——跳出多层嵌套循环,由于break语句只能影响它的最内层循环,要想立即从深层嵌套的循环中退出,使用goto语句效果和好

    while(conditional1){
                 while(conditional1){
                           while(conditional3){
                                    if(some disater)
                                            goto quit;
                                    }
                }
}
quit: ;

要想在这种情况下避免使用副作用颇多的goto语句,有两种解决方式:

-第一个方案是当你希望退出所有循环时设置一个标志状态,但这个标志状态在每个循环中都要测试

enum
{
    EXIT,
    OK
} status;
while(status == ok && conditionl1)
{
    while(status == ok && condition2)
    {
      while(condition3)
      {
          if(some disater)
            {
                status = EXIT;
                break;
            }
      }
    }
}

-另外一个方案是把所有的循环放到一个单独的桉树里面,当"灾难"降临到最内层循环时,可以使用return语句离开该函数。

你可能感兴趣的:(详解C语言语句)