---
slug: comments
lesson: 5
chapter: 1
chapterTitle: 程序
title: C++ 注释怎么写？// 和 /* */ 的区别
description: "注释是写给人看的文字，编译器直接跳过，不影响程序运行。单行注释用 //，多行注释用 /* */。本课讲清两种写法的区别、注释的真正用途，以及好注释的标准。"
code: |
  #include <iostream>
  using namespace std;

  /*
   * 程序功能：输出一句问候
   */
  int main() {
      // 输出问候语
      cout << "你好！" << endl;
      return 0;
  }
faq:
  - q: "// 和 /* */ 有什么区别？"
    a: "// 是单行注释，从 // 到行尾都是注释；/* */ 是多行注释，可以跨越多行。日常代码 // 使用最多，/* */ 适合文件头说明和临时停用整段代码。"
  - q: 注释会影响程序运行吗？
    a: 不会。编译器直接跳过注释，注释不生成任何机器指令。有无注释，编译结果完全相同。
  - q: 注释可以写中文吗？
    a: 可以。注释的读者是人，使用中文或英文均可，现代编辑器（包括 CppStudio）都正常支持中文注释。
  - q: 注释掉代码是什么意思？
    a: 指用注释标记把暂时不想执行的代码包起来，使其失效但不删除——调试时常用这一技巧验证某行代码的影响。但长期不用的代码应当删除，而不是堆积成注释。
---

<div class="answer">
注释是写给人看的文字，编译器直接跳过，对程序运行没有任何影响。
两种写法：// 注释到行尾（单行），/* */ 可以跨行（多行）。
注释的真正用途不是复述代码在做什么，而是说明为什么这样做。
</div>

## 两种注释

```cpp
#include <iostream>
using namespace std;

/*
 * 程序功能：输出一句问候
 */
int main() {
    // 输出问候语
    cout << "你好！" << endl;
    return 0;
}
```

**单行注释 `//`**：从 `//` 到行尾均为注释。可独占一行，也可跟在代码之后。

**多行注释 `/* */`**：从 `/*` 到 `*/` 均为注释，可以跨行。典型用途是文件头部的说明块，以及临时停用整段代码。

## 注释的真正用途

初学者容易把注释写成代码的复读：

```cpp
int a = 6;   // 定义变量a并赋值为6 —— 无效注释，代码本身已经说明
```

有价值的注释写的是代码中**看不出来**的信息——为什么这样做、有什么约束：

```cpp
int maxScore = 100;  // 规则上限，超出按 100 计
```

判断标准：遮住代码只看注释，能理解程序为什么这样设计，注释就是合格的。

## 用注释调试

调试时验证「去掉这行会怎样」，不必删除代码，用注释将其停用：

```cpp
// cout << a << endl;   暂时不输出 a
```

这行代码仍在文件中，但编译器将其忽略，恢复时去掉 `//` 即可。这是调试阶段的常用手法。

## 常见错误

- **`/* */` 漏写收尾**：缺少 `*/` 时后续代码全部被注释，报错位置往往远离真正的问题；
- **`/* */` 嵌套**：`/* ... /* ... */ ... */` 不成立，第一个 `*/` 即结束注释；
- **误认为字符串中的 // 是注释**：`"http://..."` 中的 `//` 是字符串内容，编译器不会把它当注释。

至此第一章结束：程序的结构、编译与运行的关系、头文件、名字空间、注释。下一章进入变量——变量监视区将从那里开始有内容。
