根据C++'03标准2.3/1的规定:
在任何其他处理之前,每次出现以下三个字符序列之一(“三连字符序列”),将被替换为表1中指定的单个字符。
在现实生活中,这意味着代码---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
printf( "What??!\n" );
将打印出What|
,因为??!
是一种三字符序列,它被替换成了|
字符。
我的问题是什么是使用三字符序列的目的?使用三字符序列是否有任何实际优势?
更新:回答中提到一些欧洲键盘没有所有标点符号,因此非美国程序员在日常工作中必须使用三字符序列吗?
更新2:Visual Studio 2010默认关闭三字符支持。
是""+"~"(因为有deadkeys,就在#上面)。所以这并不是什么大问题。我的手指好像自己就能打出这些组合键 :-D - nonchip