Zgodnie z C ++ '03 Standard 2.3 / 1:
Przed jakimkolwiek innym przetwarzaniem każde wystąpienie jednej z następujących sekwencji trzech znaków („sekwencje trygrafów”) zastępuje się pojedynczym znakiem wskazanym w tabeli 1.
---------------------------------------------------------------------------- | trigraph | replacement | trigraph | replacement | trigraph | replacement | ---------------------------------------------------------------------------- | ??= | # | ??( | [ | ??< | { | | ??/ | \ | ??) | ] | ??> | } | | ??’ | ˆ | ??! | | | ??- | ˜ | ----------------------------------------------------------------------------
W prawdziwym życiu oznacza to, że kod printf( "What??!\n" );
będzie drukowany, What|
ponieważ ??!
jest to sekwencja trygrafu, która jest zastępowana |
znakiem.
Moje pytanie brzmi: jaki jest cel używania trójgrafów? Czy jest jakaś praktyczna zaleta używania trójgrafów?
UPD : W odpowiedziach wspomniano, że niektóre europejskie klawiatury nie mają wszystkich znaków interpunkcyjnych, więc programiści spoza Stanów Zjednoczonych muszą używać trójgrafów w życiu codziennym?
UPD2 : Visual Studio 2010 ma domyślnie wyłączoną obsługę trygrafów .