From 2.13.2/3
The double quote
"and the question mark?, can be represented as themselves or by the escape sequences\"and\?[...].
Simply put, the following:
char x = '\?'; //or '\"'
char y = '?'; //or '"'
represent the same character. Why treat these two (especially ?) differently than other characters?
\" gives consistency between single-quoted character literals and double-quoted string literals (they're defined to use the same escape sequences, as a result \' and \" can be used in both). I'm slightly guessing, but I reckon the committee just figured it was too much bother to define different escape sequences in each, for no benefit and arguably a slight detriment.
\? is for avoiding trigraphs: ??= is a trigraph, ?\?= isn't.
来源:https://stackoverflow.com/questions/11241313/what-is-the-rationale-in-allowing-to-be-escaped