c - 转义序列 '\' 有什么用处?

标签 c

在下面的代码片段中,“\”的行为如何?

printf("hii\"); // This line gives error :  missing terminating " character

printf("hii\  n"); // This line prints hii n 

我无法了解此转义序列在这里的行为方式,请解释一下。

最佳答案

escape sequence不是单个 \ 字符;就是后面跟着另一个角色。例如,\" 是一个转义序列,\n 也是如此。在某些情况下,您可以看到反斜杠后面的多个字符全部作为相同的转义代码;这与字符在内部的表示方式(ASCII 或 Unicode 值)有关,目前可以安全地忽略。

转义序列用于写入不方便/不可能直接放入代码中的字符。例如,\" 是引号的转义序列。这就像在字符串中放入引号,否则您无法这样做,因为它会关闭字符串文字。看看您的问题的语法突出显示以了解我的意思;第一行的大部分内容被视为字符串的一部分,因为您永远不会有未转义的结束引号。

最常见的转义序列可能是\n。与 \" 不同,它不仅仅在字符串中生成文字 n;您无需转义即可做到这一点。相反,它会生成换行符。代码

printf("hii\nthere");

打印

hii
there

到屏幕。

问题中的第二行代码使用转义序列 \ (反斜杠空格)。这不是标准的转义序列;如果您在编译时带有警告,您的编译器可能会报告它忽略了它或其他内容。

(如果您想实际在屏幕上打印反斜杠,则需要使用 \\ 对反斜杠进行转义)

关于c - 转义序列 '\' 有什么用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51353472/

相关文章:

将 c 中的成本寻址指针从 unsigned char * 转换为 const char *?

创建自定义数据结构的常量实例

c - 在 shell 上的这个 C 程序中为什么会出现段错误错误

c - 安装AVR开发平台for mac时架构x86_64错误

c++ - 声明指针变量时,内存分配给指针的名称还是指针的地址?

C fgetc 同时用作同一函数的参数时的奇怪行为

c - 结构数组的初始化会初始化单个元素的所有成员,为什么?

objective-c - 苹果操作系统 X : Intercept keyboard layout change

c - 使用 fgets() 读取多行。如何转到下一行?

c - 如果 if 语句结果为 false,如何循环?