Constantes enteras (Informática)

(Redirigido desde «Constantes enteras»)

Constantes enteras (Informática)
Información sobre la plantilla
Concepto:Representan un int, y pueden estar expresadas en los sistemas de numeración decimal; octal o hexadecimal

Constantes enteras (Informática). Representan un int, y pueden estar expresadas en los sistemas de numeración decimal; octal o hexadecimal. En ausencia de ningún sufijo, el tipo de una constante entera se deduce de su valor. Las reglas para las constantes decimales son distintas del resto.

Decimal

Se permiten constantes enteras en formato decimal (base 10) dentro del rango 0 a 4, 294, 967, 295; las que excedan este límite serán truncadas. Las constantes decimales no pueden comenzar con cero, porque serían interpretadas como octales.

              int i = 10; // decimal 10

              int i = 010; // decimal 8 (octal 10)

              int i = 0; // decimal 0 = octal 0

Tipos adoptados por las constantes decimales en función del valor declarado (en ausencia de sufijos L o U)

              0                      a 32,767                int

              32,768              a 2,147,483,647     long

              2,147,483,648   a 4,294,967,295     unsigned long

              >4294967295                                truncado

Octal

Todas las constantes que empiecen por cero se suponen en octal (base 8). Si una constante de este tipo contiene dígitos ilegales (8 o 9), se produce un mensaje de error, las que exceden del valor máximo 037777777777 son truncadas.

Tipos adoptados por las constantes Octales en función del valor declarado (en ausencia de sufijos L o U).

              00                      a 077777                int

              010000               a 0177777              unsigned int

              02000000            a 017777777777     long

              020000000000     a 037777777777     unsigned long

              > 037777777777                               truncado.

Hexadecimal

Cualquier constante que comience por 0x o 0X es considerada hexadecimal, base 16, después se pueden incluir los dígitos válidos (0...9, a...f, A...F). Las que excedan del valor máximo 0xFFFFFFFF son truncadas.

Tipos adoptados por las constantes hexadecimales en función del valor declarado (en ausencia de sufijos L o U).

             0x0000           a 0x7FFF           int

             0x8000           a 0xFFFF           unsigned int

             0x10000         a 0x7FFFFFFF    long

             0x80000000    a 0xFFFFFFFF   unsigned long

             >0xFFFFFFFF                          truncado

Sufijos: long (L) y unsigned (U)

La adición de sufijos en la definición de una constante puede forzar que esta sea de un tipo específico, así pues, los sufijos funcionan como una especie de "casting" para las constantes. Se utilizan las letras U u L l. Estos sufijos se pueden utilizar juntos y en cualquier orden o grafía (ul, lu, Ul, lU, uL, Lu, LU o UL).

Los sufijos L / l después de una constante la fuerzan a ser declarada como long. Ejemplo:

             const x = 7L; // x es long

Los sufijos U / u la fuerzan a que sea declarada como unsigned; en este caso, con independencia de la base utilizada, la constante será considerada unsigned long si el valor del número es mayor que el decimal 65,535. Ejemplo:

            const x = 7U; // x es unsigned int

            const y = 66000U; // y es unsigned long

En ausencia de alguno de estos sufijos el tipo de la constante es el primero de los que se señalan que pueda albergar su valor.

            Decimal:         int, long int, unsigned long int

            Octal:             int, unsigned int, long int, unsigned long int

            Hexadecimal:  int, unsigned int, long int, unsigned long int

Si la constante tiene un sufijo U o u, su tipo es unsigned int, unsigned long o int (el primero que pueda albergar el valor).

Si tiene un sufijo L o l, su tipo es long int o unsigned long int (el primero que pueda albergar el valor). Si la constante tiene ambos sufijos, u e l (ul, lu, Ul, lU, uL, Lu, LU o UL), su tipo de es unsigned long int. Ejemplo:

           const z = 0UL; // z es unsigned long

Como puede verse, las constantes enteras sin L o U compendian la representación de constantes enteras en cualquiera de los tres sistemas de numeración (en C++Builder).

Algunos compiladores utilizan los sufijos ll/LL y ull/ULL para referirse a los enteros extendidos long long y unsigned long long respectivamente.

Véase también

Fuente