??? note "什么是 include?"
`#include` 其实是一个预处理命令,意思为将一个文件“放”在这条语句处。也就是说,在编译时,编译器会“复制” `iostream` 头文件中的内容,“粘贴”到 `#include <iostream>` 这条语句处。这样,你就可以使用 `iostream` 中提供的 `std::cin` 、 `std::cout` 、 `std::endl` 等对象了。
+
+ 如果你学过 C 语言,你会发现 C++ 中的头文件一般都不带 `.h` 后缀,而那些 C 语言中的头文件 `xx.h` 都变成了 `cxx`,如 `stdio.h` 变成了 `cstdio`。
一般来说,应当根据你需要使用的 C++ 内置的函数、对象来确定你要 `#include` 哪些头文件。但如果你 `#include` 了多余的头文件,也几乎不会造成什么影响。
??? note "什么是 \n?"
`\n` 是一种 **转义字符** ,表示换行。
-
+
+ 转义字符用来表示一些无法轻易输入的字符,如由于字符串字面值无法换行而无法输入的换行符,由于表示字符串字面值的开头结尾而无法输入的引号,由于表示转义字符而无法输入的反斜杠。
+
常用的转义字符还有:
1. `\t` 表示制表符。
在 C++ 中,所有空白字符(空格、制表符、换行),多个或是单个,都被视作是一样的。(当然,引号中视作字符串的一部分的不算。)
-因此,你可以自由地使用任何码风(除了行内注释、字符串字面值与预处理命令必须在单行内),例如:
+因此,你可以自由地使用任何代码风格(除了行内注释、字符串字面值与预处理命令必须在单行内),例如:
```cpp
/* clang-format off */
}
```
-在 C++ 中,使用宏是不被推荐的。常量应当使用 `const` 限定符声明,宏应当使用函数代替。
+使用 `#define` 是有风险的,因此应谨慎使用。较为推荐的做法是,常量使用 `const` 限定符声明,宏使用函数代替。
但是,在 OI 中, `#define` 依然有用武之处: