2026/07/31 C语言的语句和块
C语言标准中一共提供6种语句,注意C语言中的语句要指明执行的操作,并且没有特殊情况,语句是按照顺序执行的。
语句:
1.复合语句
2.表达式语句
3.选择语句
4.标签语句
5.跳转语句
6.迭代语句(循环语句)
用户一般会把实现某些功能的语句整合在一起,构成一个语法单元,C语言标准的语法单元也被称为块,也被称为块语句。块是语句和声明的集合,每个代码块都是独立的语法单元。
1.复合语句 {}
复合语句可以限制语句的作用范围,但是一般情况复合语句很少单独使用,都是和其他语句一起使用。复合语句是可以嵌套的,另外复合语句中可以为空,注意复合语句的作用域是不同的。
变量的生命周期:在复合语句中定义的变量只可以在该复合语句内部使用,并且是向下继承的,如果父语句和子语句中定义了相同的变量,则在子语句中采取“就近原则”。
2.表达式语句
C语言程序一般使用表达式来实现某种操作,表达式是由一组操作符以及操作数组成。表达式语句中表达式是可选的,若语句中没有表达式只有分号(空语句),则不会执行任何操作。
3.选择语句
(1)针对一种情况
C语言标准中提供了一种 if() 语句,if是C语言的关键字之一,具有“如果”的含义,可以看到if()语句需要一个控制表达式,当表达式为真时,则会执行statement,如果表达式为假,则不执行statement。
if语句的控制表达式应该具有标量形式,即单一数值,非0即真,无聚合结构。
(2)针对两种情况
C语言中提供了if()... else结构的语句,else是C语言关键字之一,具有“否则”,当if语句的表达式不成立时,则会执行else对应的语句。
else关键字是不允许单独使用的,必须和if配套使用,并且else要和最近的以及没有配套if进行配套
(3)针对多种情况
C语言标准提供了switch语句,switch也是C语言关键字之一,用于表示多分支选择,需要配合标签语句一起用:
switch( 表达式 ) //表达式结果必须是整型
{
case 常量表达式1 : 待执行的语句1
case 常量表达式2 : 待执行的语句2
case 常量表达式3 : 待执行的语句3
case 常量表达式4 : 待执行的语句4
default : 待执行的语句n ---->当所有的case语句都不满足时才会执行!!!
}
注意:case标签的常量表达式的结果必须是整型常量,并且case标签必须是互斥的(不能出现重复的情况,会导致二义性)。
注意:switch语句应该结合break语句,目的是利用break语句终止switch语句,避免多个标签都被执行。
4.标签语句
C语言标准中提供了3种标签语句,其中使用频率较高是case标签和default标签,case和default都是C语言的关键字之一,case具有匹配的含义,default具有默认的含义。case标签语句和default标签语句只能在switch语句中使用,对于普通的标签语句(标识符标签)是作用于整个函数,配合跳转语句使用。
5.跳转语句
跳转语句可以跳转到其他位置,C语言标准中提供了四种跳转语句:goto语句、continue语句、break语句、return语句。
break语句只能用于switch语句或者循环语句,作用是终止语句。
continue语句只能应用在循环体内,作用是跳转到循环体的末尾,并不会终止循环,相当于提前结束本次循环,循环体内continue语句后面的语句不会执行。
goto跳转语句需要结合标签语句一起使用,会跳转到标签所在的位置,一般应用于程序的错误处理。
return是函数级跳转语句,作用是终止当前正在执行的函数,将程序控制权交还给调用该函数的上层代码,同时可携带返回值传回调用处。
6.迭代语句(循环语句)
C语言标准中提供了while()语句、do ...while()语句、for()语句,每种语句都具有控制表达式,当控制表达式的值不等于0则会重复执行循环体,当控制表达式的值等于0时终止循环体的执行。
(1)while()语句
每次执行循环体之前,都需要计算控制表达式的值。
先判断,再执行。循环体一般结合复合语句{}一起使用。如果表达式的值一开始就是假的(等于0),则while()循环一次都不会执行。while()语句可以用于设计死循环,防止程序退出,while(1)。
(2)do...while()语句
每次循环体执行之后才会计算表达式的值。
先执行,后判断。若控制表达式一开始就是假的(等于0),则复合语句也会执行一次。
do {...} while(expression); 其中分号不可省略。
(3)for()语句
for (clause-1 ; expression-2 ; expression-3){...}
遵循先判断,再执行。
表达式1如果是变量声明,则该变量的作用域在循环体内有效。如果是表达式,则该表达式会在第一次表达式2执行之前被执行,只会执行一次。
表达式2是控制表达式,表达式2不等于0,则重复循环。
每次循环体执行之后会执行一次表达式3。
表达式1和表达式3是可以省略的,但分号不可省略。
表达式2如果也被省略,则会用非0常量进行替换,会构成死循环。即for(;😉;
作者:bbzhu04@gmail.com ,多有不妥之处,望批评指正
本文原创,欢迎转载;转载请在文章显著位置标明原文链接: href="https://www.cnblogs.com/zhubb/p/22118309"
保留所有权限,未经许可禁止篡改、商用发布。

浙公网安备 33010602011771号