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