Menu

C++ 注释:单行 // 与多行 /* */

如何在 C++ 中写注释:单行的 // 和多行的 /* */ 块注释,以及如何注释掉代码、为什么块注释不能嵌套、什么样的注释值得保留。

本页包含可运行的编辑器。编辑、运行,立即查看输出。

注释的用途

注释是源代码中会被 C++ 编译器完全忽略的文字。它永远不会进入编译后的程序,纯粹是写给读代码的人看的。你可以用注释来解释某件事为什么要这样做、留下提醒,或者在不删除代码的情况下暂时禁用它。

在你已经掌握的 C++ 语法基础上,注释是少数几乎可以放在任何地方、编译器都会直接跳过的东西之一。C++ 有两种注释:单行注释(//)和多行块注释(/* */)。

单行注释

两个斜杠(//)开始一段注释,一直延续到当前行的末尾。编译器会跳过从 // 到换行之间的所有内容。

注意第二条注释和真正的代码在同一行。// 之前的部分照常运行,只有它后面的部分被忽略。这是写简短说明最常用的注释风格。

多行块注释

当说明跨越好几行时,块注释比在每一行前面加 // 更整洁。块注释以 /* 开始,以 */ 结束。两者之间的所有内容,不管有多少行,都会被忽略。

沿着左侧对齐的 * 字符只是一种风格惯例,并不是规则。真正起作用的只有开头的 /* 和结尾的 */。块注释甚至可以放在一行的中间,int x = 5 /* width */ + 2; 是合法的,不过这样很快就会变得难以阅读。

注释掉代码

注释是在做实验时禁用代码而不删除它的标准方式。单独一行用 //,一次关闭好几行则用块注释。

运行它,你只会看到两行“runs”被打印出来。被注释掉的 cout 语句对编译器来说是不可见的。

不能嵌套的陷阱

一个常让新手中招的陷阱:块注释不能嵌套。无论前面有多少个 /*,第一个 */ 都会结束注释。所以你不能把一个 /* ... */ 块包在另一个 /* ... */ 块里面:里面的 */ 会结束整个注释,它后面的所有内容又变回了代码(通常会导致语法错误)。

/*  Trying to disable a region that already has a block comment...
    int n = 10; /* the width */
    cout << n;
*/  // the first */ above already closed the comment - this line is now stray code

外层注释在 the width 后面的 */ 处就结束了,所以剩下的部分不再被注释,编译器会卡在末尾多出来的 */ 上。当你需要禁用一段本身已包含块注释的代码时,改为在每一行前面加 //。大多数编辑器用一个快捷键就能对整个选区切换行注释,完全绕开了这个问题。

好注释与噪音

注释应该解释代码本身说不清楚的东西。仅仅复述代码的注释只会添乱,而且随着代码修改,往往会变得过时。

// Bad: just repeats what the code obviously does
i = i + 1; // add one to i

// Better: explains the reason, which the code can't show
retries++; // back off and retry; the API is rate-limited at 5 req/sec

努力让代码本身通过清晰的命名和结构变得易读,把注释留给为什么:意图、取舍、边界情况,以及相关背景的链接。如果你发现自己在写注释解释一行令人困惑的代码,这通常是在提示你:应该给变量改个名字,或者把逻辑拆分成一个命名良好的函数。

下一篇:变量

现在你已经会给代码加注释了,下一个基础构件是在代码中存储数据。下一篇讲解变量:如何声明变量,它们可以保存哪些内置类型,以及 C++ 作为静态类型语言所强制执行的规则。

常见问题

C++ 怎么写注释?

单行注释用 //,这一行中它后面的所有内容都会被编译器忽略。跨越多行的注释,则把文字放在 /* 和 */ 之间。例如:// this is a note 或 /* this spans lines */。

C++ 中 // 和 /* */ 有什么区别?

// 注释掉的是单独一行的剩余部分,所以每一行都需要一个。/* */ 是块注释,从 /* 开始,一直到下一个 */ 为止,即使跨越很多行。简短的行内说明用 //,一次性禁用一大段文字或代码用 /* */。

C++ 的注释可以嵌套吗?

不可以。块注释(/* */)不能嵌套:无论前面有多少个 /*,第一个 */ 都会结束注释。要禁用一段本身已包含块注释的代码,改为在每一行前面加 //(大多数编辑器用一个快捷键就能做到)。

Coddy 编程语言插图

和 Coddy 一起学编程

开始