Trigraphen
Der Zeichensatz Quelle von C-Quellprogrammen enthalten, ist innerhalb des ASCII-Zeichensatzes 7-Bit; ist eine Obermenge des invarianten Code-Satzes ISO 646-1983.Trigraph sequenzen können nur mit dem invarianten Code-Satzes zu schreibenden C-Programme, ISO (Internationale Standard-Organisation).Trigraphen sind Sequenzen von drei Zeichen (zwei aufeinander folgenden Fragezeichen) eingeführt und durch die der Compiler durch ihre entsprechende Interpunktionszeichen ersetzt.Sie können mit einem Trigraphen in C-Quelldateien Zeichensatz verwenden, der keine einfache grafische Darstellungen für einige Interpunktionszeichen enthält.
In der folgenden Tabelle sind die neun Trigraph sequenzen an.Alle Vorkommen in einer Quelldatei der Interpunktionszeichen in der ersten Spalte werden durch das entsprechende Zeichen in der zweiten Spalte ersetzt.
Trigraph-Sequenzen
Trigraph |
Satzzeichen |
---|---|
??= |
# |
??( |
[ |
??/ |
\ |
??) |
] |
??' |
^ |
?? < |
{ |
??! |
| |
?? > |
} |
??- |
~ |
Ein Trigraph wird immer als einzelnes als Zeichen behandelt.Die Übersetzung von Trigraphen findet im ersten Übersetzungsphase, bevor die Erkennung von Escapezeichen in Zeichenfolgenliterale und Zeichenkonstanten statt.Nur die neun Trigraphen, die in der obigen Tabelle angegeben werden, erkannt werden.Alle anderen Zeichen werden unübersetzt sequenzen.
Die Escapezeichen \?, sequence, dass die Fehlinterpretation von Trigraph ähnlichen Zeichen sequenzen.(Weitere Informationen zu Escapesequenzen finden Sie unter Escapesequenzen). Wenn Sie beispielsweise versuchen, die Zeichenfolge What??! mit dieser printf-Anweisung ausgeben
printf( "What??!\n" );
die gedruckte Zeichenfolge ist What| , da ??! Trigraph eine Zeichenfolge ist, die durch ersetzt wurde |Zeichen.Schreiben Sie die Anweisung, wie im Folgenden die Zeichenfolge ordnungsgemäß drucken:
printf( "What?\?!\n" );
In dieser printf-Anweisung hat zur Folge, dass ein Escapezeichen des umgekehrten Schrägstrich vor dem zweiten Fragezeichen die Fehlinterpretation von ??! als Trigraph.