c - 转义序列“\”的用途是什么?
问题描述
在下面的代码片段中,'\' 的行为如何?
printf("hii\"); // This line gives error : missing terminating " character
printf("hii\ n"); // This line prints hii n
我无法理解这个转义序列在这里的表现,请解释一下。
解决方案
转义序列不是单个\
字符。它后面跟着另一个字符。例如,\"
是一个转义序列,如\n
. 在某些情况下,您可以看到反斜杠后面的多个字符都作为相同的转义码;这与字符在内部的表示方式(ASCII 或 Unicode 值)有关,现在可以安全地忽略。
转义序列用于编写不方便/不可能直接放入代码的字符。例如,\"
是引号的转义序列。这就像在字符串中放一个引号,否则你不能这样做,因为它会关闭字符串文字。查看问题的语法突出显示以了解我的意思;第一行的大部分内容都被视为字符串的一部分,因为您永远不会有未转义的右引号。
最常见的转义序列可能是\n
. 与 with 不同\"
,它不只是n
在字符串中产生文字;你可以在没有逃脱的情况下做到这一点。相反,它会产生一个换行符。编码
printf("hii\nthere");
印刷
hii
there
到屏幕。
您问题中的第二行代码使用转义序列\
(反斜杠空格)。这不是标准的转义序列;如果您在编译时出现警告,您的编译器可能会报告它正在忽略它或其他东西。
(如果你想在屏幕上实际打印一个反斜杠,你需要转义一个反斜杠,使用\\
)
推荐阅读
- wix - 安全属性的安全含义是什么?
- xamarin - 如何在 xamarin 表单中设置集合视图的自动高度?
- prometheus - 普罗米修斯计数器上的百分位数增加
- php - 如何在数组中提取一个值并将其余值留在 Laravel
- apache-httpclient-4.x - Apache HttpClient、Cisco VoIP 电话 - POST CGI 执行 CiscoIpPhoneError 1
- indexing - 如何在 Cassandra 2.1.6 中获取二级索引的统计信息(例如磁盘大小)?
- python - 如何使用 python 关闭默认的 Windows 热键?
- java - 带有自定义按钮的 DatePicker 对话框
- ag-grid - ag-grid:剪贴板中的过去不起作用(已禁用)
- java - 如何设计具有未来可能更改的对象列表的视图模型