为什么\a
(哔),\v
(垂直标签)在我的程序中不起作用,即使它们是标准的,根据下面的链接?为什么单个引号也能正常工作?不使用\'
?最后,\?
是微软网站所说的转义字符,因为我在printf()
格式字符串中使用了?符号而没有\
它工作正常。
要清楚说明:
为什么\a
和\v
无效?
为什么单引号在没有\
的情况下工作,即使\'
是转义序列?
\?
是否为转义序列?(链接说明了但?在没有\
的情况下工作)http://msdn.microsoft.com/en-us/library/h21280bw(v=vs.80).aspx http://en.wikipedia.org/wiki/Escape_sequences_in_C
答案 0 :(得分:2)
- 为什么
\a
和\v
无效?
因为您使用的控制台不支持它们。编译器会在输出中生成正确的字符代码,但终端仿真器会忽略它们。
- 为什么单引号在没有
\
的情况下工作,即使\'
是转义序列?
因为没有必要在字符串中转义它,所以只需要在char
字面值中转义它。 \"
文字的string
相同:
"'"
与'\''
'"'
与"\""
\?
是转义序列吗? (链接说明了但?
没有\
)
该链接实际上说的是不同的东西:
请注意......
\?
指定文字问号,如果字符序列被错误解释为三字母
只有在以下字符形成有效三字符的情况下才能避免歧义,例如??=
(这是#
的三字母)。如果要在字符串中使用此序列,则需要转义第一个(或第二个)?
。
答案 1 :(得分:0)
某些转义序列是特定于设备的。因此,它们不能在每个设备上产生所需的效果。例如,垂直制表符(\v
)和换页符(\f
)转义序列不会影响屏幕输出。但他们确实执行了适当的打印机操作。