首先,问号 ? 可以由其本身描述(The double-quote " and question-mark ? are representable either by themselves or by the escape sequences \" and \?, respectively, ……),所以在非必须的时候可以不加。
什么时候是必须的呢?就不得不提C标准的一颗老鼠屎 --- Trigraph Sequences。
不废话了,直接举例
#include <stdio.h>
int main( void )
{
printf( "??= ??/??/ ??' ??! ??- ??( ??) ??< ??>\n" ); // 输出
# \ ^ | ~ [ ] { }
printf( "?
\?= ?
\?/?
\?/ ?
\?' ?
\?! ?
\?- ?
\?( ?
\?) ?
\?< ?
\?>\n" ); // 输出
??= ??/??/ ??' ??! ??- ??( ??) ??< ??>
}