一、空语句
只有一个;
的语句,不执行任何操作,但也算作一条语句。
二、表达式语句
表达式语句:表达式+一个;
,就将表达式转换成表达式语句。
- C语言没有专门的赋值语句,赋值语句用表示式语句替代。
- 赋值是一种操作,用表达式来完成。
注意:
y + 3;
- 这一表达式语句是正确的,但它不具备任何效果;
- 这里的不具备任何效果是指:表达式的值被忽略;
printf( "Hello World!"\n );
- printf函数是有返回值的,但其返回值我们通常不关心,所有这条语句没有任何效果。
- 这条语句具有“副作用”,意思是,虽然表达式的值被忽略,但它完成了有用的工作:打印字符串,这就是副作用;
- 上一条语句是没有副作用的。
三、break语句和continue语句
- break语句:跳出最内层的循环;
- continue语句:跳过本次循环的剩余部分,进入本循环体的下一轮循环。
四、for语句和while语句
for语句将循环控制语句写在同一个地方,分别为:初始化部分,条件部分,调整部分。这三个部分都可以省略,如果省略条件部分。则表示测试值始终为真。
而while语句的循环控制语句放在循环体的内部。
当循环体很庞大时,for语句在风格上更有优势。在for循环和while循环中使用continue语句时:
则for循环将跳过本轮循环的剩余部分,回到调整部分;
而while循环则会同时跳过调整部分,直接进入下一轮循环。在不知道循环执行多少次时用while语句合适,在知道语句循环次数时,选择for语句会使循环条件更清晰。
五、switch语句
- switch语句的case标签的值必须是唯一的整型值(字符也是):
case 2: statement-list;
case 'a': statement-list;
- case标签并不将语句列表划分为几个部分,case标签只是决定语句列表的进入点,程序从进入点的这条语句起,执行之后的所有语句,default语句也是如此。
- switch语句通过case标签下的break语句来讲语句列表划分为几个部分。
- switch语句中的continue语句没有任何效果,只有当switch语句处在某一循环中时,continue语句会跳过并执行下一次循环,则由此可见,continue语句并不作用于switch语句,而是作用于外层的循环语句。
- 可以设定不同表达式的值执行同一组语句:
switch( expression ){
case 1:
case 2:
case 3:
statement-list;
break;
case 4:
case 5:
statement-list;
break;
default:
statement-list;
break;
}
C语言没有办法指定某一个范围内的值,该范围内每一个值都必须以单独的case标签给出。
六、goto语句
尽量少用goto语句;goto 语句标签
,则程序跳转到标识符后符语句处。其中,语句标签由标识符加:组成,写在要跳转语句的前面。
- 补充:
在多层嵌套循环中,立即跳出最内存循环的方法:- 直接使用goto语句;
- 在最内层循环设置一个状态标志,并在每一层循环中对这个状态标志进行判断;
- 将所有的循环体封装成一个函数,并用return语句退出循环。