Trigraphs
Zestaw znaków źródła c źródła programów jest zawarty w 7-bitowego zestawu znaków ASCII, ale jest nadzbiorem ISO 646-1983 Niezmiennik kodu zestawu.Trigraf sekwencji umożliwiają c programy mają być zapisane za pomocą tylko ISO (międzynarodową organizację standaryzacyjną) niezmienny kodu zestawu.Trigraphs są sekwencjami trzy znaki (wprowadzony przez dwa kolejne znaki zapytania), kompilator zamienia ich odpowiednich znaków interpunkcyjnych.Trigraphs można użyć w pliki źródłowe c z zestawu znaków, który nie zawiera graficzne przedstawienie wygodny dla niektórych znaków interpunkcyjnych.
W poniższej tabeli przedstawiono sekwencje dziewięciu trigraf.Wszystkie wystąpienia w pliku źródłowym, znaków interpunkcyjnych w pierwszej kolumnie są zastępowane odpowiedni znak w drugiej kolumnie.
Trigraf sekwencji
Trigraf |
Znak interpunkcji |
---|---|
??= |
# |
??( |
[ |
??/ |
\ |
??) |
] |
??' |
^ |
??< |
{ |
??! |
| |
??> |
} |
??- |
~ |
Trigraf jest zawsze traktowane jako znak pojedynczego źródła.Tłumaczenie trigraphs odbywa się w pierwszym fazy tłumaczenie, przed uznawania znaków anulowania w literały ciągów i stałych znaków.Rozpoznawane są tylko dziewięć trigraphs pokazane w powyższej tabeli.Niekodująca inny znak, które są pozostawione sekwencji.
Sekwencja znaków escape, \?, zapobiega błędnej interpretacji sekwencje znaków jak trigraf.(Aby uzyskać informacje na temat sekwencji unikowych, zobacz Sekwencji unikowych.) Na przykład, jeśli próba drukowania ciąg What??! z tym printf instrukcji
printf( "What??!\n" );
ciąg, drukowany jest What| ponieważ ??! jest sekwencją trigraf, który jest zastępowany |znak.Napisać następującą instrukcję w następujący sposób, aby poprawnie wydrukować ciąg:
printf( "What?\?!\n" );
W tym printf instrukcji, odwróconego ukośnika na początku drugiego znaku zapytania zapobiega błędnej interpretacji ??! jako trigraf.