Alternative operators and tokens
Le code source C peut être écrit dans n'importe quel jeu de caractères 8 bits qui inclut le
jeu de caractères invariant ISO 646:1983
, même non-ASCII. Cependant, plusieurs opérateurs et ponctuateurs C nécessitent des caractères qui sont en dehors du jeu de codes ISO 646 :
{, }, [, ], #, \, ^, |, ~
. Pour pouvoir utiliser des encodages de caractères où certains ou tous ces symboles n'existent pas (comme l'allemand
DIN 66003
), il existe deux possibilités : des orthographes alternatives des opérateurs qui utilisent ces caractères ou des combinaisons spéciales de deux ou trois caractères compatibles ISO 646 qui sont interprétées comme s'il s'agissait d'un seul caractère non-ISO 646.
Table des matières |
Macros d'opérateur (C95)
Il existe des orthographes alternatives pour les opérateurs qui utilisent des caractères non-ISO646, définies dans <iso646.h> comme macros :
|
Défini dans l'en-tête
<iso646.h>
|
|
| Principal | Alternatif |
&&
|
and
(macro d'opérateur) |
&=
|
and_eq
(macro d'opérateur) |
&
|
bitand
(macro d'opérateur) |
|
|
bitor
(macro d'opérateur) |
~
|
compl
(macro d'opérateur) |
!
|
not
(macro d'opérateur) |
!=
|
not_eq
(macro d'opérateur) |
||
|
or
(macro d'opérateur) |
|=
|
or_eq
(macro d'opérateur) |
^
|
xor
(macro d'opérateur) |
^=
|
xor_eq
(macro d'opérateur) |
Les caractères & et ! sont invariants selon ISO-646, mais des alternatives sont fournies pour les opérateurs utilisant ces caractères afin de s'adapter aux jeux de caractères historiques encore plus restrictifs.
Il n'existe pas d'orthographe alternative (telle que eq ) pour l'opérateur d'égalité == car le caractère = était présent dans tous les jeux de caractères pris en charge.
Tokens alternatifs (C95)
Les jetons alternatifs suivants font partie du langage de base et, à tous égards du langage, chaque jeton alternatif se comporte exactement comme son jeton principal, à l'exception de son orthographe (l' opérateur de stringification peut rendre l'orthographe visible). Les jetons alternatifs à deux lettres sont parfois appelés "digrammes" (même si % : % : est également considéré comme un digramme).
| Principal | Alternatif |
|---|---|
{
|
<%
|
}
|
%>
|
[
|
<:
|
]
|
:>
|
#
|
%:
|
##
|
%:%:
|
Trigraphs (supprimés en C23)
Les trois groupes de caractères suivants (trigraphes) sont analysés avant que les commentaires et les littéraux de chaîne ne soient reconnus , et chaque apparition d'un trigraphe est remplacée par le caractère primaire correspondant :
| Principal | Trigraphe |
|---|---|
{
|
??<
|
}
|
??>
|
[
|
??(
|
]
|
??)
|
#
|
??=
|
\
|
??/
|
^
|
??'
|
|
|
??!
|
~
|
??-
|
Parce que les trigraphes sont traités tôt, un commentaire tel que // Will the next line be executed?????/ va effectivement commenter la ligne suivante, et le littéral de chaîne tel que "What's going on??!" est analysé comme "What's going on|" .
Exemple
Démontre les orthographes alternatives des opérateurs du <iso646.h> ainsi que l'utilisation des digraphes et trigraphes. Si les arguments de la ligne de commande contiennent des espaces, ils doivent être entourés de guillemets, par exemple, "Third World!" .
Sortie possible :
Hello ./a.out
Voir aussi
|
Documentation C++
pour
Représentations alternatives des opérateurs
|