Trigramy
Źródłowy zestaw znaków programów źródłowych języka C jest zawarty w 7-bitowym zestawie znaków ASCII, ale jest nadzbiorem Niezmiennego zestawu kodów ISO 646-1983.Sekwencje trójznaków pozwalają programom języka C na zapisywanie tylko przy użyciu Niezmiennego zestawu kodów ISO (Międzynarodowej Organizacji Normalizacyjnej).Trójznaki są sekwencjami trzech znaków (rozpoczętymi przez dwa kolejne znaki zapytania), które kompilator zamienia na odpowiadający im znak interpunkcyjny.Możesz używać trójznaków w plikach źródłowych języka C z zestawem znaków, który nie zawiera wygodnych reprezentacji graficznych dla niektórych znaków interpunkcyjnych.
Poniższa tabela pokazuje dziewięć sekwencji trójznaków.Wszystkie wystąpienia znaków interpunkcyjnych z pierwszej kolumny są zamieniane w pliku źródłowym na odpowiadający znak z drugiej kolumny.
Sekwencje trójznakowe
Trójznak |
Znak interpunkcyjny |
---|---|
??= |
# |
??( |
[ |
??/ |
\ |
??) |
] |
??' |
^ |
??< |
{ |
??! |
| |
??> |
} |
??- |
~ |
Trójznak jest zawsze traktowany jako pojedynczy znak źródłowy.Tłumaczenie trójznaków zachodzi w pierwszej fazie tłumaczenia, przed rozpoznawaniem znaków ucieczki w literałach ciągu i stałych znakowych.Rozpoznawane jest tylko dziewięć trójznaków pokazanych w powyższej tabeli.Wszystkie inne sekwencje znaków są pozostawiane nieprzetłumaczone.
Znak sekwencji ucieczki \? zapobiega błędnej interpretacji sekwencji znaków podobnych do trójznaków. (Aby uzyskać informacje dotyczące sekwencji ucieczki, zobacz Sekwencje ucieczki). Na przykład, jeśli spróbujesz wydrukować ciąg What??! za pomocą instrukcji printf
printf( "What??!\n" );
ciąg zostanie wydrukowany jako What|, ponieważ ??! jest sekwencją trójznaku zamienianą na znak |.Napisz instrukcję w następujący sposób, aby poprawnie wydrukować ciąg:
printf( "What?\?!\n" );
W tej instrukcji printf, znak ucieczki ukośnika odwrotnego przed drugim znakiem zapytania zapobiega błędnej interpretacji ??! jako trójznaku.