返回列表 发帖

1.3 关于注释

C++支持两种注释方式:

  • 单行注释(//),以双斜线开头,双斜线右边的内容是注释
  • 界定符(/**/),这个注释以(/*)开头,以(*/)结尾,可以跨行注释


注释的例子如下:
  1. #include <iostream>
  2. /*  
  3. * 最简单的一个函数
  4. * 读入两个数,并计算它们的和
  5. * http://bbs.redlegend.org
  6. * 推荐这样的风格,每行以*标示是多行注释的一部分
  7. */
  8. int main()
  9. {
  10.     //让用户输入两个数字
  11.         std::cout << "请输入两个数字: " << std::endl;
  12.         int v1, v2;  //声明两个变量,均未被初始化
  13.         std::cin >> v1 >> v2;  //读入输入的值
  14.         std::cout << "v1 + v2 = " << v1 << " + " << v2 << " = " << v1 + v2 << std::endl;
  15.         /*输出结果v1 + v2 = ?*/
  16.         return 0;
  17. }
复制代码
切忌
注释对不可以嵌套,/*/**/*/是不允许的,具体的各种组合方式大家可以一个个验证一下下。

我测试的一个注释样式如下,请暂时总结了一个判断的逻辑,不知道对不对,希望大家验证一下我的结论。
以下面注释为例子
编号 12
3 4 5 6 7 89
内容 /*
/
*
/
H
I
*
/


  • 编译器读入第1、2个字符(/*)表明了有可能是一个注释的开头。
  • 接着读入第3个字符,不是结束,继续,还不能判断是注释
  • 接着读入第4个字符,是(*),则如果下一个字符为(/)就为一个注释对,中间的内容就为注释,否则继续判断
  • 读入第5个字符,是(/),和第4个字符一起组成了(*/)表明了注释的结束,则(/*/*/)为一个完整的注释
  • 而后面的(HI*/)则被认为是代码的部分,但是编译器报错,代码无法识别。


习题解答
习题 1.7
编译如下带有不正确嵌套的注释
  1. #include <iostream>
  2. int main()
  3. {
  4.         /* comment pairs/* 123456789 */ cannot nest.
  5.          * "cannot nest" is considered source code.
  6.      */                  
  7.         return 0;
  8. }
复制代码
编译器返回如下的错误信息


习题 1.8
指出下列输出语句哪些是合法的
  1. std::cout << "/*"; 正确,只有成对出现才被认为是注释
  2. std::cout << "*/"; 正确,理由同上
  3. std::cout << /* "*/" */; 编译器将/* "*/ 认为是注释了,之后"*/被认为是代码,无法通过编译
复制代码
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

返回列表 回复 发帖