根据C ++'03 Standard 2.3 / 1:
在进行任何其他处理之前,以下三个字符序列之一(“字母序列”)的每次出现都被表1中指示的单个字符代替。
---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
在现实生活中,这意味着代码printf( "What??!\n" );
将被打印,What|
因为??!
是由|
字符替换的三部曲序列。
我的问题是使用三字组合的目的是什么?使用三字组合有任何实际的优势吗?
UPD:在回答中提到某些欧洲键盘没有所有的标点符号,因此非美国程序员在日常生活中必须使用三字母组合吗?
UPD2:默认情况下,Visual Studio 2010的Trigraph支持已关闭。