- Operadores de C y C++
-
Esta es una lista de los grandes operadores de los lenguajes de programación C y C++. Todos los operadores listados existen en C++. La tercera columna indica si también están presentes en C. También hay que tener en cuenta que C no permite la sobrecarga de operadores.
Los siguientes operadores son puntos de secuencia en ambos lenguajes (cuando no están sobrecargados):
&&,||,?:, y,(el operador coma).C++ también incluye los operadores de conversión de tipos
const_cast,static_cast,dynamic_castyreinterpret_cast, que no están listados en la tabla por brevedad. El formato de estos operadores significa que su nivel de precedencia no es importante.La mayoría de los operadores presentes en C y C++ (con la excepción del operador coma y el operador flecha) también se encuentran disponibles en los lenguajes de programación Java, Perl, C# y PHP con la la misma precedencia, asociatividad y semántica. Con una única excepción: la asociatividad del operador ternario en PHP es de izquierda a derecha.
Contenido
Tabla
Para los objetivos de esta tabla
a,bycrepresentan valores válidos (literales, valores de variables o valores de retorno), nombres de objetos o lvalores según el caso.Operadores aritméticos
Nombre del operador Sintaxis Sobrecargable Incluido en C Más unitario +a
Sí
SíSuma a + b
Sí
SíPreincremento ++a
Sí
SíPostincremento a++
Sí
SíAsignación con suma a += b
Sí
SíMenos unitario (negación) -a
Sí
SíResta a - b
Sí
SíPredecremento --a
Sí
SíPostdecremento a--
Sí
SíAsignación con resta a -= b
Sí
SíMultiplicación a * b
Sí
SíAsignación con multiplicación a *= b
Sí
SíDivisión a / b
Sí
SíAsignación con división a /= b
Sí
SíMódulo (Resto) a % b
Sí
SíAsignación con módulo a %= b
Sí
SíOperadores de comparación
Nombre del operador Sintaxis Sobrecargable Incluido en C Menor que a < b
Sí
SíMenor o igual que a <= b
Sí
SíMayor que a > b
Sí
SíMayor o igual que a >= b
Sí
SíNo igual que a != b
Sí
SíIgual que a == b
Sí
SíNegación lógica !a
Sí
SíAND lógico a && b
Sí
SíOR lógico a || b
Sí
SíOperadores a nivel de bit
Nombre del operador Sintaxis Sobrecargable Incluido en C Desplazamiento a la izquierda a << b
Sí
SíAsignación con desplazamiento a la izquierda a <<= b
Sí
SíDesplazamiento a la derecha a >> b
Sí
SíAsignación con desplazamiento a la derecha a >>= b
Sí
SíComplemento a uno ~a
Sí
SíAND binario a & b
Sí
SíAsignación con AND binario a &= b
Sí
SíOR binario a | b
Sí
SíAsignación con OR binario a |= b
Sí
SíXOR binario a ^ b
Sí
SíAsignación con XOR binario a ^= b
Sí
SíOtros operadores
Nombre del operador Sintaxis Sobrecargable Incluido en C Asignación básica a = b
Sí
SíLlamada a función a()
Sí
SíÍndice de Array a[b]
Sí
SíIndirección (Desreferencia) *a
Sí
SíDirección de (Referencia) &a
Sí
SíMiembro de puntero a->b
Sí
SíMiembro a.b
No
SíDesreferencia a miembro por puntero a->*b
Sí
NoDesreferencia a miembro por objeto a.*b
No
NoConversión de tipo (tipo) a
Sí
SíComa a , b
Sí
SíCondicional ternario a ? b : c
No
SíResolución de ámbito a::b
No
NoPuntero a función miembro a::*b
No
NoTamaño de sizeof a
sizeof(tipo)
No
SíIdentificación de tipo typeid(a)
typeid(tipo)
No
NoAsignar almacenamiento new tipo
Sí
NoAsignar almacenamiento (Vector) new tipo[n]
Sí
NoDesasignar almacenamiento delete a
Sí
NoDesasignar almacenamiento (Vector) delete[] a
Sí
NoExtensiones del lenguaje
Nombre del operador Sintaxis Sobrecargable Incluido en C Vendedor Dirección de la etiqueta && etiqueta
No
SíGCC Obtener tipo typeof a
typeof(expr)
No
SíGCC min y max a <? b
a >? b
No
NoGCC Precedencia de operadores
La tabla siguiente es una lista que muestra el orden de precedencia y la asociatividad de todos los operadores del lenguaje de programación C++. Están listados de arriba a abajo por orden de precedencia descendente y con la misma descendencia en la misma celda (puede haber varias filas de operadores en la misma celda). La precedencia de los operadores no cambia por la sobrecarga.
Una tabla de precendencias, aunque adecuada, no puede resolver todos los detalles. Por ejemplo, el operador ternario permite expresiones arbitrarias como operador central independientemente de la precedencia del resto de operadores. Así
a ? b , c : des interpretado comoa ? (b, c) : den vez de(a ? b), (c : d). También hay que tener en cuenta que el resultado sin paréntesis de una expresión de conversión en C no puede ser el operando desizeof. Por esosizeof (int) * xes interpretado como(sizeof(int)) * xy no comosizeof ((int) *x).Operador Descripción Asociatividad ::Resolución de ámbito (solo C++) Izquierda a derecha ++--
()
[]
.
->
typeid()
const_cast
dynamic_cast
reinterpret_cast
static_castPost- incremento y decremento
Llamada a función
Elemento de vector
Selección de elemento por referencia
Selección de elemento con puntero
Información de tipo en tiempo de ejecución (solo C++)
Conversión de tipo (solo C++)
Conversión de tipo (solo C++)
Conversión de tipo (solo C++)
Conversión de tipo (solo C++)++--
+-
!~
(type)
*
&
sizeof
newnew[]
deletedelete[]Pre- incremento y decremento
Suma y resta unitaria
NOT lógico y NOT binario
Conversión de tipo
Indirección
Dirección de
Tamaño de
Asignación dinámica de memoria (solo C++)
Desasignación dinámica de memoria (solo C++)Derecha a izquierda .*->*Puntero a miembro (solo C++) Izquierda a derecha */%Multiplicación, división y módulo +-Suma y resta <<>>Operaciones binarias de desplazamiento <<=
>>=Operadores relaciones "menor que", "menor o igual que", "mayor que" y "mayor o igual que" ==!=Operadores relaciones "igual a" y "distinto de" &AND binario ^XOR binario |OR binario &&AND lógico ||OR lógico c?t:fOperador ternario Derecha a izquierda =
+=-=
*=/=%=
<<=>>=
&=^=|=Asignaciones throwOperador Throw (lanzamiento de excepciones, solo C++) ,Coma Izquierda a derecha
Wikimedia foundation. 2010.