Alternative operators and tokens
C-Quellcode kann in jedem 8-Bit-Zeichensatz geschrieben werden, der den
ISO 646:1983
invarianten Zeichensatz enthält, selbst in nicht-ASCII-Zeichensätzen. Allerdings erfordern mehrere C-Operatoren und Interpunktionszeichen Zeichen, die außerhalb des ISO-646-Codesatzes liegen:
{, }, [, ], #, \, ^, |, ~
. Um Zeichenkodierungen verwenden zu können, in denen einige oder alle dieser Symbole nicht vorhanden sind (wie das deutsche
DIN 66003
), gibt es zwei Möglichkeiten: alternative Schreibweisen der Operatoren, die diese Zeichen verwenden, oder spezielle Kombinationen von zwei oder drei ISO-646-kompatiblen Zeichen, die so interpretiert werden, als wären sie ein einzelnes Nicht-ISO-646-Zeichen.
Inhaltsverzeichnis |
Operatormakros (C95)
Es gibt alternative Schreibweisen für die Operatoren, die Nicht-ISO646-Zeichen verwenden, definiert in <iso646.h> als Makros:
|
Definiert im Header
<iso646.h>
|
|
| Primär | Alternative |
&&
|
and
(Operator-Makro) |
&=
|
and_eq
(Operator-Makro) |
&
|
bitand
(Operator-Makro) |
|
|
bitor
(Operator-Makro) |
~
|
compl
(Operator-Makro) |
!
|
not
(Operator-Makro) |
!=
|
not_eq
(Operator-Makro) |
||
|
or
(Operator-Makro) |
|=
|
or_eq
(Operator-Makro) |
^
|
xor
(Operator-Makro) |
^=
|
xor_eq
(Operator-Makro) |
Die Zeichen & und ! sind unter ISO-646 invariant, dennoch werden Alternativen für die Operatoren bereitgestellt, die diese Zeichen verwenden, um restriktivere historische Zeichensätze zu berücksichtigen.
Es gibt keine alternative Schreibweise (wie eq ) für den Gleichheitsoperator == , da das Zeichen = in allen unterstützten Zeichensätzen vorhanden war.
Alternative Tokens (C95)
Die folgenden alternativen Token sind Teil der Kernsprache und verhalten sich in jeder Hinsicht der Sprache genau wie ihre primären Token, außer in ihrer Schreibweise (der Stringifizierungsoperator kann die Schreibweise sichtbar machen). Die zweibuchstabigen alternativen Token werden manchmal als "Digraphen" bezeichnet (obwohl % : % : ebenfalls als Digraph betrachtet wird).
| Primär | Alternative |
|---|---|
{
|
<%
|
}
|
%>
|
[
|
<:
|
]
|
:>
|
#
|
%:
|
##
|
%:%:
|
Trigraphs (entfernt in C23)
Die folgenden Dreiergruppen (Trigraphs) werden vor der Erkennung von Kommentaren und Zeichenkettenliteral analysiert , und jedes Vorkommen eines Trigraphs wird durch das entsprechende Hauptzeichen ersetzt:
| Primär | Trigraf |
|---|---|
{
|
??<
|
}
|
??>
|
[
|
??(
|
]
|
??)
|
#
|
??=
|
\
|
??/
|
^
|
??'
|
|
|
??!
|
~
|
??-
|
Da Trigraphs früh verarbeitet werden, wird ein Kommentar wie // Will the next line be executed?????/ effektiv die folgende Zeile auskommentieren, und der String-Literal wie "What's going on??!" wird geparst als "What's going on|" .
Beispiel
Demonstriert alternative Operatorschreibweisen aus der <iso646.h> sowie die Verwendung von Digraphen und Trigraphen. Wenn Kommandozeilenargumente Leerzeichen enthalten, sollten sie in Anführungszeichen gesetzt werden, z.B., "Third World!" .
Mögliche Ausgabe:
Hello ./a.out
Siehe auch
|
C++ Dokumentation
für
Alternative Operator-Repräsentationen
|