
上QQ阅读APP看书,第一时间看更新
3.2 复合语句
复合语句也被称为语句块,是由“{”“}”符号和多条语句构成的。在开发程序时,单一的一条语句不能完成一项逻辑功能,通常将多条语句组合为复合语句来实现。例如:
【例3.1】 使用复合语句。

在使用“{”和“}”符号设计复合语句时,复合语句中也可以不包含代码,此时的复合语句与空语句的作用是相同的。例如:

上述代码定义了一个空复合语句。在程序中可以使用空复合语句来代替空语句,在使用复合语句时,需要注意“}”符号之后没有分号。例如,下面的复合语句是非法的。

在使用复合语句时,需要注意的是在复合语句中定义的变量,其作用域范围为当前定义变量处到复合语句的结束。分析下面的代码:

在上述代码中,在复合语句中定义了变量ivar,但是在复合语句之外访问了变量ivar,因此会出现编译错误。如果将上述代码修改为如下形式,则不会出现编译错误。

在上述代码中,定义了两个同名的整型变量ivar,其中在复合语句中输出的ivar值为1,在复合语句之外输出的ivar值为0。在复合语句内部定义了与外部同名的变量时,其复合语句内部的变量将取代外部变量。
注意
尽量不要在同一段代码中的复合语句内外定义同名的变量,虽然这样是合法的,但是不利于程序的阅读,也容易出现逻辑错误。
对于复合语句来说,复合语句是可以嵌套的。
【例3.2】复合语句中变量的作用域。

在上面的代码中,内层复合语句输出的ivar值为2,而复合语句之外的输出语句输出的ivar值为0。对于内层嵌套的复合语句来说,它访问的变量是外层复合语句中定义的变量ivar(其值初始化为1)。