![Visual C++从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/338/27563338/b_27563338.jpg)
上QQ阅读APP看书,第一时间看更新
3.2 复合语句
复合语句也被称为语句块,是由“{”“}”符号和多条语句构成的。在开发程序时,单一的一条语句不能完成一项逻辑功能,通常将多条语句组合为复合语句来实现。例如:
【例3.1】 使用复合语句。
![](https://epubservercos.yuewen.com/771DC2/15825992505222206/epubprivate/OEBPS/Images/Figure-P92_29061.jpg?sign=1739266784-3BffzABnEX3IRe5tp764QPyhbTCNgmyq-0-af8365486bcdc171e011684d73f0e048)
在使用“{”和“}”符号设计复合语句时,复合语句中也可以不包含代码,此时的复合语句与空语句的作用是相同的。例如:
![](https://epubservercos.yuewen.com/771DC2/15825992505222206/epubprivate/OEBPS/Images/Figure-P93_29164.jpg?sign=1739266784-tbCGM4QiQXsPfEBKt8nt5DUfMaxRs1OE-0-40e3c2c113314f83a8ed85d5ed9c8c79)
上述代码定义了一个空复合语句。在程序中可以使用空复合语句来代替空语句,在使用复合语句时,需要注意“}”符号之后没有分号。例如,下面的复合语句是非法的。
![](https://epubservercos.yuewen.com/771DC2/15825992505222206/epubprivate/OEBPS/Images/Figure-P93_29169.jpg?sign=1739266784-WUIa9YT7W3sIijQsSRdkBgqf7cIVK07t-0-3b9d54a7e9aa9c683a75fcdc794a128f)
在使用复合语句时,需要注意的是在复合语句中定义的变量,其作用域范围为当前定义变量处到复合语句的结束。分析下面的代码:
![](https://epubservercos.yuewen.com/771DC2/15825992505222206/epubprivate/OEBPS/Images/Figure-P93_29189.jpg?sign=1739266784-hSo9tgtWipkMIxkqn5v1q1eqUPihpZUr-0-f4d243fa02229175262e64da376fd159)
在上述代码中,在复合语句中定义了变量ivar,但是在复合语句之外访问了变量ivar,因此会出现编译错误。如果将上述代码修改为如下形式,则不会出现编译错误。
![](https://epubservercos.yuewen.com/771DC2/15825992505222206/epubprivate/OEBPS/Images/Figure-P93_29209.jpg?sign=1739266784-H4QDCSGKTgn76SD9JUAfwL8n9YSjqDOH-0-662efe0c595a5cb63f0af2cd89d45752)
在上述代码中,定义了两个同名的整型变量ivar,其中在复合语句中输出的ivar值为1,在复合语句之外输出的ivar值为0。在复合语句内部定义了与外部同名的变量时,其复合语句内部的变量将取代外部变量。
注意
尽量不要在同一段代码中的复合语句内外定义同名的变量,虽然这样是合法的,但是不利于程序的阅读,也容易出现逻辑错误。
对于复合语句来说,复合语句是可以嵌套的。
【例3.2】复合语句中变量的作用域。
![](https://epubservercos.yuewen.com/771DC2/15825992505222206/epubprivate/OEBPS/Images/Figure-P93_29239.jpg?sign=1739266784-XKd1f0ZKbUtW5ZOd5cCzXsGHoZ3vPqir-0-7dbaa4398db3f0400602afcc6d232974)
在上面的代码中,内层复合语句输出的ivar值为2,而复合语句之外的输出语句输出的ivar值为0。对于内层嵌套的复合语句来说,它访问的变量是外层复合语句中定义的变量ivar(其值初始化为1)。