【c++教程】4.2-复合语句

本文详细介绍了C++中的复合语句,包括其特点、作用及使用场景。讨论了是否应总是使用复合语句的问题,指出在代码易变性和美观性的权衡中,复合语句的选择应视具体情况而定。最后提供了一种编写代码的建议,以避免因需求变化导致的代码调整困难。
部署运行你感兴趣的模型镜像

复合语句

写在花括号{}中的内容组成的语句,就是复合语句。特别的,如果你只写了一个花括号,里面什么内容都没有,这也是一种空语句,相当于只有一个分号。

复合语句有三个主要特点:

1,整个花括号中虽然可能包括了多条语句,但是算作一个复合语句。

2,复合语句有自己的作用域,因此在离开复合语句以后,其中定义的变量会销毁。

3,复合语句的结束不需要分号,当然也许从这是一个语句的角度来说,应该要写分号才对,但是不写分号可以算作是一种福利。也就是既然已经知道它在哪里结束了,就不用再额外写结束标志了。

复合语句的作用

1,当只需要一条语句,但是一条语句无法满足实际需要的时候,需要使用复合语句。经常会发生于选择或者循环语句使用的时候。

#include <iostream>

using namespace std;

int main()
{
	int a = 500;
	if (a > 0)
	{
		a += 20;
		cout << "a: " << a << endl;
	}
}

2,由于复合语句有自己独立的作用域,因此,可以通过复合语句来定义重名变量。

这个在很多情况下,可能是很有用的。因为很多时候,给变量起一个好的名字也是很困难的,尤其在反复使用相同的功能的情况下,如果必须保证变量不重名的话,很可能就要加数字表示了。因此,如果可以将定义重名变量的部分写入复合语句之中,就可以让变量名可以重复使用。

#include <iostream>

using namespace std;

int main()
{
	{
		int a = 520;
		cout << a << endl;
	}

	// 这两个a所在的作用域不同,不会互相影响
	int a = 1314;
	cout << a << endl;
}

思考:是否应该总是使用复合语句

之前,我们说到在条件或者循环语句中,可以使用复合语句,那么,如果不使用复合语句也可以完成,是否应该总是使用复合语句呢?

#include <iostream>

using namespace std;

int main()
{
	int a = 520;

	// 不使用复合语句
	if (a > 0)
		cout << a << endl;

	// 使用复合语句
	if (a > 0)
	{
		cout << a << endl;
	}
}

最终的运行结果自然是没有差别的,但是像这样只需要一个简单语句就可以完成的工作,到底是否应该使用复合语句呢?

使用复合语句的坏处是什么,很显然是不美观。第一种没使用复合语句的写法很简洁,一句话就解决了。第二种使用了复合语句的写法很多余,就是花括号没有发挥作用。那么在这种情况下,到底使用复合语句好不好呢?似乎答案已经明确了,不使用复合语句更好。

但是真的是这样吗?如果从长远角度来说的话,这个程序如果以后还需要更新和维护,那么很可能发生这样一种情况,以前在这个if语句中,只需要一句就能解决的问题,现在解决不了了,必须要增加更多的语句。在这种情况下,如果我们使用的是不使用复合语句的版本,那么我们还要先为其添加花括号,然后才能开始写新的需求,比较麻烦。而如果使用的是有复合语句的版本,那么我们直接换行以后,继续添加语句即可。那这样来看的话,似乎又是总是使用复合语句更好了。

因此,如果我们非要得到一个结论的话,那就是:在能不用复合语句的情况下,如果这段代码是不会改变的(至少在可以预见的未来,你认为它应该不会被改变),那么,不使用复合语句更好。如果这段代码,后续随时都可能改变,那么应该总是使用复合语句。

当然,这是一个建议,最终要如何决定代码风格自然还是取决于你自己。

顺便一提,如果你决定要能不使用复合语句就不使用复合语句的话,我的建议是,如果你还不明确代码要怎么写,你可以先把复合语句的花括号写上。如果发现没用到,那再删掉就是了。这样可以有效避免,你认为这里不需要复合语句,等到第一句写完了,才发现需要复合语句的情况。毕竟,删掉括号要比添加括号更加容易。

点击查看全部c++教程

您可能感兴趣的与本文相关的镜像

HunyuanVideo-Foley

HunyuanVideo-Foley

语音合成

HunyuanVideo-Foley是由腾讯混元2025年8月28日宣布开源端到端视频音效生成模型,用户只需输入视频和文字,就能为视频匹配电影级音效

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值