Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


3.2.3a  Expresiones constantes

§1  Sinopsis

Una expresión constante es aquella que solo implica a constantes (queda reducida a una constante), por lo que puede ser evaluada en tiempo de compilación y debe evaluarse a un valor que esté en el rango de valores admitidos para el tipo que se declara. Por ejemplo, si estamos declarando una constante tipo int, la expresión debe reducirse a un int:

int const peso = 50 + 20;

Los operandos de las expresiones constantes pueden ser constantes enteras ( 3.2.3b); constantes carácter ( 3.2.3d); constantes fraccionarias ( 3.2.3c); constantes de enumeración ( 3.2.3g); expresiones sizeof ( 4.9.13); expresiones de modelado de tipos ( 4.9.9), e incluso otras expresiones constantes, aunque en ciertos casos se imponen algunas restricciones .

Las expresiones constantes se evalúan como el resto de las expresiones con variables y pueden utilizarse en cualquier caso en que sea legal el uso de una constante.

§2  Sintaxis

expresion-constante:

Expresion-condicional

§3  Ejemplo

#define LEAP 1           /* en años bisiestos */

int days[31+28+LEAP+31+30+31+30+31+31+30+31+30+31];


§4  Las expresiones constantes no pueden contener ninguno de los operadores indicados a continuación a menos que los operadores estén contenidos dentro del operando de un operador sizeof ( 4.9.13).

  Asignación               int const k = 2+(kte = 4);   // Error

  Coma                       int const k = (i=1, 3);      // Error

  Decremento              int const k = kte--;         // Error

  Llamada a función     int const k = func(4);       // Error

  Incremento               int const k = kte++;         // Error


§5  Existen múltiples situaciones en las que el compilador C++ exige la presencia de expresiones constantes enteras (que se resuelvan a un entero).  Por ejemplo, para establecer el tamaño del campo de bits de una estructura ( 4.5.9); el valor de una constante de enumeración ( 3.2.3g); el tamaño de una matriz ( 4.3.1) o el valor de una constante case ( 4.10.2).

§6  Expresiones constantes restringidas

Las expresiones constantes utilizadas en las directivas de preproceso ( 4.9.10d) están sujetas a ciertas restricciones adicionales, por lo que son conocidas como expresiones constantes restringidas. Entre estas restricciones se encuentran que no pueden contener constantes fraccionarias; tampoco expresiones sizeof, constantes de enumeración ni expresiones de modelado de tipo.