Відповідно до стандарту C ++ '03 2.3 / 1:
Перш ніж проводити будь-яку іншу обробку, кожне виникнення однієї з наступних послідовностей з трьох символів ("послідовності триграфа") замінюється одним символом, зазначеним у таблиці 1.
---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
У реальному житті це означає, що код printf( "What??!\n" );
призведе до друку, What|
тому що ??!
це триграфічна послідовність, яка замінюється |
символом.
Моє запитання - яка мета використання триграфів? Чи є якась практична перевага використання триграфа?
UPD : У відповідях згадувалося, що деякі європейські клавіатури не мають усіх розділових знаків, тому програмістам, які не в США, доводиться використовувати триграфи в повсякденному житті?
UPD2 : Visual Studio 2010 має підтримку триграфа за замовчуванням вимкнено.