🔷 第二章 C++语言基础
📄 一句话概括

注释是写给人和未来的自己看的说明,编译器把它当空气——完全忽略、不占运行时间。两种写法:// 管一行(最常用),/* ... */ 管一段(不能嵌套)。写注释的原则只有一条:写"为什么",不写"是什么"——// 把 x 加 1 这种废话不如不写。

一、两种写法

// ① 单行注释:从 // 开始,到本行结束
int age = 18;   // 也可以跟在语句后面

/* ② 多行注释:
   从 /* 开始,到 */ 结束
   可以跨好几行              */
// 单行 /* */ 多行
范围 本行 // 之后全部 /* 到 */ 之间全部
常见用法 行末补充说明、临时注释掉一行 文件头说明、注释掉一大段
陷阱 无 不能嵌套——里面再出现 */ 会提前结束

嵌套陷阱具体长这样:

/* 外层注释开始
   /* 里面又想写一段注释 */
   cout << "这行其实已经不在注释里了";   // ← 编译器会来编译它
*/                                        // ← 这个 */ 反而报错

建议:日常就用 //,最不容易出岔子。

二、注释的三个正经用途

  1. 说明"为什么"——这是注释的主职 cpp const double RATE = 0.13; // 增值税税率,2026 年起按此执行
  2. 临时屏蔽代码(调试时最常用) cpp cout << "调试:a = " << a << endl; // 暂时注释掉
  3. 标记待办 cpp // TODO: 这里还没处理除数为 0 的情况 // FIXME: 输入负数时结果不对
📝 一条实用判断

把注释读出来,如果它只是在复述代码写了什么(// 把 x 加 1),删掉; 如果它在解释为什么这么写、有什么坑、业务上代表什么(// 汇率天天变,所以先换算成"分"用整数算),留下。

三、动手 Demo:两个实验,看清"注释被忽略"和"// 不总是注释"

实验一:注释不影响结果

新建 comment.cpp,写两行 cout,然后在中间塞 20 行 // 注释,编译运行——输出一字不差。说明预处理器把它们全丢掉了。

实验二:字符串里的 // 不是注释(新手踩过的大坑)

#include <iostream>
using namespace std;

int main() {
    cout << "https://www.example.com" << endl;   // 网址里的 // 只是普通字符
    return 0;
}

看到什么算成功:输出完整网址 https://www.example.com,没有被截断。 理解要点:// 只有在字符串引号外面才起注释作用。反过来,如果网址里写了中文引号或漏了结尾引号,才会真的出问题。

30 秒实验:写一句 cout << "abc" /* 中间的注释 */ << "def" << endl;,看看输出是 abcdef——说明注释可以插在语句中间,编译器直接跳过它。

四、常见误区

  1. "注释越多越专业"——错。好代码大部分能自解释,注释只补"为什么"。满屏废话注释的代码,反而更难读
  2. "注释写错了不影响运行,所以随便写"——过期的注释比没有注释更危险:代码改了、注释没改,下一个人(包括三个月后的你)会被误导
  3. "注释掉一大段代码是好习惯"——长期保留的"死代码"会让文件越来越乱。临时调试可以,留下的历史交给版本管理工具(第 13 章之后会提到)
  4. "中文注释会乱码,只好写英文"——不必。把 Dev-C++ 的编码设成 UTF-8(1.2.2 首启三设置里的第三项),中文注释就正常。乱码是编码设置问题,不是中文的锅
自测三问(点开对答案) 1. 两种注释怎么写?——`//` 注释本行剩余部分;`/* ... */` 注释中间一段(**不能嵌套**)。 2. 注释会影响程序运行速度吗?——不会。它在**预处理阶段就被丢掉**了,最终程序里根本不存在。 3. 什么样的注释是好注释?——解释**为什么这么写**(意图、坑、业务规则);复述代码的属于废话注释。

相关笔记