C++支持两种注释方式:
- 单行注释(//),以双斜线开头,双斜线右边的内容是注释
- 界定符(/**/),这个注释以(/*)开头,以(*/)结尾,可以跨行注释
注释的例子如下:- #include <iostream>
- /*
- * 最简单的一个函数
- * 读入两个数,并计算它们的和
- * http://bbs.redlegend.org
- * 推荐这样的风格,每行以*标示是多行注释的一部分
- */
- int main()
- {
- //让用户输入两个数字
- std::cout << "请输入两个数字: " << std::endl;
- int v1, v2; //声明两个变量,均未被初始化
- std::cin >> v1 >> v2; //读入输入的值
- std::cout << "v1 + v2 = " << v1 << " + " << v2 << " = " << v1 + v2 << std::endl;
- /*输出结果v1 + v2 = ?*/
- return 0;
- }
复制代码 切忌
注释对不可以嵌套,/*/**/*/是不允许的,具体的各种组合方式大家可以一个个验证一下下。
我测试的一个注释样式如下,请暂时总结了一个判断的逻辑,不知道对不对,希望大家验证一下我的结论。
以下面注释为例子
| 编号 | 1 | 2
| 3 | 4 | 5 | 6 | 7 | 8 | 9
| | 内容 | / | *
| /
| *
| /
| H
| I
| *
| /
|
- 编译器读入第1、2个字符(/*)表明了有可能是一个注释的开头。
- 接着读入第3个字符,不是结束,继续,还不能判断是注释
- 接着读入第4个字符,是(*),则如果下一个字符为(/)就为一个注释对,中间的内容就为注释,否则继续判断
- 读入第5个字符,是(/),和第4个字符一起组成了(*/)表明了注释的结束,则(/*/*/)为一个完整的注释
- 而后面的(HI*/)则被认为是代码的部分,但是编译器报错,代码无法识别。
习题解答
习题 1.7
编译如下带有不正确嵌套的注释- #include <iostream>
- int main()
- {
- /* comment pairs/* 123456789 */ cannot nest.
- * "cannot nest" is considered source code.
- */
- return 0;
- }
复制代码 编译器返回如下的错误信息
习题 1.8
指出下列输出语句哪些是合法的- std::cout << "/*"; 正确,只有成对出现才被认为是注释
- std::cout << "*/"; 正确,理由同上
- std::cout << /* "*/" */; 编译器将/* "*/ 认为是注释了,之后"*/被认为是代码,无法通过编译
复制代码 |