17

这段代码是什么:(特别是反斜杠 '\' 是什么?)

s23_foo += \ 
s8_foo * s16_bar;

我添加了数据类型,因为它们可能是相关的。谢谢你的帮助。

4

4 回答 4

40

反斜杠在 C++ 中表示两种不同的东西,具体取决于上下文。

作为续行

在引号字符串(见下文)之外,a\用作行继续符。行尾的换行符(不可见)被预处理器有效地忽略,下一行被附加到当前行。

所以:

s23_foo += \ 
s8_foo * s16_bar;

被解析为:

s23_foo += s8_foo * s16_bar;

续行可以串在一起。这个:

s23_foo += \ 
s8_foo * \
s16_bar;

变成这样:

s23_foo += s8_foo * s16_bar;

在 C++ 中,空格在大多数情况下都无关紧要,因此在这个特定示例中,不需要续行。这应该编译得很好:

s23_foo += 
s8_foo * s16_bar;

事实上,当您有很长的术语序列时,它有助于对代码进行分页。

由于预处理器处理 a#define直到到达换行符,所以行继续在宏定义中最有用。例如:

#define FOO() \
s23_foo += \ 
s8_foo * s16_bar; 

如果没有行继续符,FOO这里将是空的。

作为转义序列

在引号字符串中,反斜杠用作分隔符以开始 2 个字符的转义序列。例如:

"hello\n"

在这个字符串文字中,\开始一个转义序列,转义码是n\n导致在字符串中嵌入换行符。这当然意味着如果您希望字符串包含该\字符,您也必须将其转义:

"hello\\there"

生成在屏幕上查看的字符串:

你好

此处记录了各种转义序列。

于 2013-10-16T14:02:51.380 回答
24

It lets you continue a statement onto the next line - typically you only need it inside a #define macro block

于 2013-10-16T13:48:23.423 回答
0

在这种情况下,它允许您将语句继续到下一行,因此可以将其读取为s23_foo += s8_foo * s16_bar;.

于 2022-01-11T22:19:25.550 回答
-1

你也可以使用一些独特的代码

cout<<"\a";
cout<<"\t";
cout<<"\n";
于 2022-01-11T14:39:18.370 回答