空语句
空语句本身并不执行任何任务,但有时还是有用的。它所适用的场合就是语法要求出现一条完整的语句,但并不要求它执行任何任务。
表达式语句
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语句离开该函数。