De acordo com o C ++ '03 Standard 2.3 / 1:
Antes de qualquer outro processamento, cada ocorrência de uma das seguintes seqüências de três caracteres ("sequências trigrafônicas") é substituída pelo caractere único indicado na Tabela 1.
---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
Na vida real, isso significa que o código printf( "What??!\n" );
resultará na impressão, What|
pois ??!
é uma sequência de trigramas que é substituída pelo |
caractere.
Minha pergunta é qual o objetivo de usar trigramas? Existe alguma vantagem prática de usar trigramas?
UPD : Nas respostas foi mencionado que alguns teclados europeus não têm todos os caracteres de pontuação, então os programadores não americanos precisam usar trigramas no dia a dia?
UPD2 : O Visual Studio 2010 tem o suporte a trigrafs desativado por padrão.