2012-06-28 13 views
14

Von 2.13.2/3Was ist der Grund dafür, dass "?" Maskiert werden kann?

Das doppelte Anführungszeichen " und das Fragezeichen ?, als selbst dargestellt werden oder durch die Escape-Sequenzen \" und \? [...].

Einfach gesagt, die folgenden:

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

stellen den gleichen Charakter. Warum behandeln diese zwei (besonders ?) anders als andere Zeichen?

Antwort

24

\" gibt Konsistenz zwischen einfachen Anführungszeichen Zeichenliterale und doppelten Anführungszeichen Stringliterale (sie sind definiert die gleichen Escape-Sequenzen zu verwenden, als Folge \' und \" kann sowohl verwendet werden). Ich rate ein wenig, aber ich denke, das Komitee hat einfach gedacht, dass es zu viel Mühe macht, verschiedene Escape-Sequenzen in jedem zu definieren, ohne Nutzen und wohl auch nur einen kleinen Nachteil.

\? ist für die Vermeidung von Trigraphs: ??= ist ein Trigraph, ?\?= ist nicht.

+2

\? ist in der Tat etwas mit Trigraphs zu tun, siehe http://msdn.microsoft.com/en-us/library/bt0y4awe.aspx für eine Erklärung. –

Verwandte Themen