De acuerdo con C ++ '03 Standard 2.3 / 1:
Antes de que tenga lugar cualquier otro procesamiento, cada aparición de una de las siguientes secuencias de tres caracteres ("secuencias trigráficas") se reemplaza por el carácter único indicado en la Tabla 1.
---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
En la vida real, eso significa que el código printf( "What??!\n" );
dará como resultado la impresión What|
porque ??!
es una secuencia trigráfica que se reemplaza con el |
carácter.
Mi pregunta es ¿con qué propósito de usar trigrafos? ¿Hay alguna ventaja práctica de usar trigrafos?
UPD : ¿En las respuestas se mencionó que algunos teclados europeos no tienen todos los caracteres de puntuación, por lo que los programadores no estadounidenses tienen que usar trigráficos en la vida cotidiana?
UPD2 : Visual Studio 2010 tiene el soporte de trigraph desactivado de manera predeterminada.