Expressions
Una expresión es una secuencia de operadores y sus operandos , que especifica un cálculo.
La evaluación de expresiones puede producir un resultado (por ejemplo, la evaluación de 2 + 2 produce el resultado 4 ), puede generar efectos secundarios (por ejemplo, la evaluación de printf ( "%d" , 4 ) envía el carácter '4' al flujo de salida estándar), y puede designar objetos o funciones.
Contenidos |
General
- categorías de valor (lvalue, non-lvalue object, function designator) clasifican expresiones por sus valores
- orden de evaluación de argumentos y subexpresiones especifica el orden en que se obtienen los resultados intermedios
Operadores
| Operadores comunes | ||||||
|---|---|---|---|---|---|---|
| asignación |
incremento
decremento |
aritméticos | lógicos | comparación |
acceso a
miembros |
otros |
|
a
=
b
|
++
a
|
+
a
|
!
a
|
a
==
b
|
a
[
b
]
|
a
(
...
)
|
- precedencia de operadores define el orden en que los operadores se vinculan a sus argumentos
- representaciones alternativas son grafías alternativas para algunos operadores
Conversiones
- Conversiones implícitas ocurren cuando los tipos de los operandos no coinciden con las expectativas de los operadores
- Casts pueden utilizarse para convertir explícitamente valores de un tipo a otro.
Otros
- expresiones constantes pueden evaluarse en tiempo de compilación y usarse en contexto de compilación ( no-VLA (desde C99) tamaños de arreglo, inicializadores estáticos, etc)
|
(desde C11) |
|
(desde C99) |
Expresiones primarias
Los operandos de cualquier operador pueden ser otras expresiones o pueden ser expresiones primarias (por ejemplo, en 1 + 2 * 3 , los operandos del operador+ son la subexpresión 2 * 3 y la expresión primaria 1 ).
Las expresiones primarias son cualquiera de las siguientes:
| (desde C11) |
Cualquier expresión entre paréntesis también se clasifica como una expresión primaria: esto garantiza que los paréntesis tengan mayor precedencia que cualquier operador.
Constantes y literales
Los valores constantes de ciertos tipos pueden incorporarse en el código fuente de un programa C++ mediante expresiones especializadas conocidas como literales (para expresiones lvalue) y constantes (para expresiones no lvalue)
- constantes enteras son números decimales, octales o hexadecimales de tipo entero.
- constantes de carácter son caracteres individuales de tipo int aptos para conversión a un tipo carácter o de tipo char8_t , (since C23) char16_t , char32_t , o (since C11) wchar_t
- constantes flotantes son valores de tipo float , double , o long double
|
(desde C23) |
- literales de cadena son secuencias de caracteres de tipo char [ ] , char8_t [ ] (desde C23) , char16_t [ ] , char32_t [ ] , (desde C11) o wchar_t [ ] que representan cadenas terminadas en nulo
|
(desde C99) |
Expresiones no evaluadas
Los operandos del sizeof operador son expresiones que no se evalúan (a menos que sean VLA) (desde C99) . Por lo tanto, size_t n = sizeof ( printf ( "%d" , 4 ) ) ; no realiza salida a consola.
|
Los operandos del operador
|
(desde C11) |
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 6.5 Expresiones (p: TBD)
-
- 6.6 Expresiones constantes (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 6.5 Expresiones (p: 55-75)
-
- 6.6 Expresiones constantes (p: 76-77)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 6.5 Expressions (p: 76-105)
-
- 6.6 Constant expressions (p: 106-107)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 6.5 Expresiones (p: 67-94)
-
- 6.6 Expresiones constantes (p: 95-96)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 3.3 EXPRESSIONS
-
- 3.4 CONSTANT EXPRESSIONS
Véase también
|
Documentación de C++
para
Expressions
|