Disponible la versión 6 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.