Alternative operators and tokens
El código fuente en C puede escribirse en cualquier conjunto de caracteres de 8 bits que incluya el
ISO 646:1983
conjunto de caracteres invariante, incluso aquellos no ASCII. Sin embargo, varios operadores y puntuadores de C requieren caracteres que están fuera del conjunto de códigos ISO 646:
{, }, [, ], #, \, ^, |, ~
. Para poder utilizar codificaciones de caracteres donde algunos o todos estos símbolos no existen (como el
DIN 66003
alemán), existen dos posibilidades: grafías alternativas de operadores que utilizan estos caracteres o combinaciones especiales de dos o tres caracteres compatibles con ISO 646 que se interpretan como si fueran un único carácter no ISO 646.
Contenidos |
Macros de operador (C95)
Existen grafías alternativas para los operadores que utilizan caracteres no ISO646, definidas en <iso646.h> como macros:
|
Definido en el encabezado
<iso646.h>
|
|
| Primario | Alternativo |
&&
|
and
(macro de operador) |
&=
|
and_eq
(macro de operador) |
&
|
bitand
(macro de operador) |
|
|
bitor
(macro de operador) |
~
|
compl
(macro de operador) |
!
|
not
(macro de operador) |
!=
|
not_eq
(macro de operador) |
||
|
or
(macro de operador) |
|=
|
or_eq
(macro de operador) |
^
|
xor
(macro de operador) |
^=
|
xor_eq
(macro de operador) |
Los caracteres & y ! son invariantes bajo ISO-646, pero se proporcionan alternativas para los operadores que utilizan estos caracteres de todos modos para adaptarse a conjuntos de caracteres históricos aún más restrictivos.
No existe una ortografía alternativa (como eq ) para el operador de igualdad == porque el carácter = estaba presente en todos los juegos de caracteres admitidos.
Tokens alternativos (C95)
Los siguientes tokens alternativos forman parte del lenguaje núcleo, y, en todos los aspectos del lenguaje, cada token alternativo se comporta exactamente igual que su token principal, excepto por su ortografía (el operador de stringificación puede hacer visible la ortografía). Los tokens alternativos de dos letras a veces se denominan "dígrafos" (aunque % : % : también se considera un dígrafo).
| Principal | Alternativo |
|---|---|
{
|
<%
|
}
|
%>
|
[
|
<:
|
]
|
:>
|
#
|
%:
|
##
|
%:%:
|
Trígrafos (eliminados en C23)
Los siguientes grupos de tres caracteres (trigráficos) son analizados antes de que se reconozcan los comentarios y literales de cadena , y cada aparición de un trigráfico es reemplazada por el carácter primario correspondiente:
| Primario | Trígrafo |
|---|---|
{
|
??<
|
}
|
??>
|
[
|
??(
|
]
|
??)
|
#
|
??=
|
\
|
??/
|
^
|
??'
|
|
|
??!
|
~
|
??-
|
Debido a que los trigráficos se procesan tempranamente, un comentario como // Will the next line be executed?????/ efectivamente comentará la siguiente línea, y el literal de cadena como "What's going on??!" se analiza como "What's going on|" .
Ejemplo
Demuestra las grafías alternativas de operadores de la <iso646.h> así como el uso de dígrafos y trígrafos. Si los argumentos de la línea de comandos contienen espacios, deben envolverse entre comillas, por ejemplo, "Third World!" .
Salida posible:
Hello ./a.out
Véase también
|
Documentación de C++
para
Representaciones alternativas de operadores
|