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(;😉;

posted @ 2026-08-01 00:43  !城北徐公.!  阅读(8)  评论(0)    收藏  举报