1.3 注释简介

本文介绍了C++中的注释类型及其使用,包括单行注释和界定符对注释。强调了注释的重要性,指出错误注释可能造成的误导,并提醒在修改代码时同步更新注释。此外,还讨论了嵌套注释的问题,以及如何避免嵌套引起的编译错误。最后,提供了几个练习题来加深对注释规则的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.3 注释简介

在程序变得更复杂之前,我们应该了解一下C++是如何处理注释(comments)的。注释可以帮助人类读者理解程序。注释通常用于概述算法,确定变量的用途,或者解释复杂难懂的代码段。编译器会忽略注释,所以注释对程序的行为或性能不会有任何影响。
虽然编译器会忽略注释,但读者并不会。即使系统文档的其他部分已经过时,程序员也倾向于相信注释的内容是正确可信的。因此,错误的注释比完全没有注释更糟糕,因为它会误导读者。所以,当你修改代码时,不要忘记同时更新注释!

C++中注释的种类

C++中有两种注释:单行注释和界定符对注释。单行注释以双斜线(//)开始,以换行符结束。当前行双斜线右侧的所有内容都会被编译器忽略,这种注释可以包含任何文本,包括额外的双斜线。
另一种注释使用继承自C语言的两个界定符。这种注释以一个斜线加星号开始,以它反过来的样子结束,可以包含除*/外的任何内容,包括换行符。编译器将落在这之间的所有内容都当做注释。
注释界定符可以放置于任何允许放置制表符、空格符或换行符的地方。注释界定符可以跨越程序中的多行,但这并不是必须的。当注释界定符跨越多行是,最好能显式指出其内部的程序行都属于多行注释的一部分。我所采用的风格是,注释内的每行都以一个星号开头,从而指出整个范围都是多行注释的一部分。
程序中通常同时包含两种形式的注释。注释界定符对通常用于多行解释,而双斜线注释常用于半行和单行附注。

#include<iostream>
/*
 * 简单主函数:
 * 读取两个数,求它们的和
 */
int main(){
	// 提示用户输入两个数
	std::cout<<"Enter two numbers:"<<std::endl;
	int v1=0,v2=0;		// 保存我们读入的输入数据的变量
	std::cin>>v1>>v2;	// 读取输入数据
	std::cout<<"The sum of "<<v1<<" and "
			 <<v2<<" is "<<v1+v2<<std::endl;
	return 0;
}

在实际程序中,注释文本的显示形式是否区别于程序代码文本的显示,依赖于你所使用的程序设计环境是否提供这一特性。

注释界定符不能嵌套

界定符对形式的注释是以/*开始,以*/结束的。因此,一个注释不能嵌套在另一个注释之内。编译器对这类问题所给出的错误信息可能是难以理解、令人迷惑的。例如,在你的系统中编译下面的程序,就会产生错误:

/*
 * 注释对/* (*//*)不能嵌套。
 * 不能嵌套几个字会被认为是源码,
 * 像剩余程序一样处理。
 */
int main(){
	return 0;
}

我们通常需要在调试期间注释掉一些代码。由于这些代码可能包含界定符对形式的注释,因此可能导致注释嵌套错误,因此最好的方式是用单行注释方式注释掉代码段的每一行。

// /*
//  * 单行注释中的任何内容都会被忽略
//  * 包括嵌套的注释对也一样会被忽略
//  */

1.3节练习


练习1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。
练习1.8:指出下列哪些输出语句是合法的(如果有的话):

std::cout<<"/*";
std::cout<<"*/";
std::cout<</* "*/" */;
std::cout<</* "*/" /* "/*" */;

预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案(编写一个小程序,每次将上述一条语句作为其主体),改正每个编译错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值