2012-06-28 42 views
14

2.13.2/3让`?`逃脱的理由是什么?

双引号"和问号?,可以被表示为 自己或通过转义序列\"\? [...]。

简单地说,以下内容:

char x = '\?'; //or '\"' 
char y = '?'; //or '"' 

代表相同的字符。为什么对待这两个(特别是?)与其他角色不同?

回答

24

\"给出单引号字符文字和双引号字符串(他们定义为使用相同的转义序列,结果\'\"可以在两个使用)之间的一致性。我略微猜测,但我认为委员会认为在每个转义序列中定义不同的转义序列太麻烦了,因为没有任何好处,并且可以说是轻微的损害。

\?是用于避免三字母:??=是三字母,?\?=不是。

+2

\?确实与trigraphs有关,请参阅http://msdn.microsoft.com/en-us/library/bt0y4awe.aspx以获取解释。 –