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.3d  Constantes carácter

§1  Sinopsis

Una constante carácter es uno o más caracteres delimitados por comillas simples, como  'A', '+', o '\n'. En C++, son de un tipo específico: char del que existen dos versiones, signed y unsigned [1].  El valor por defecto, el que se supone cuando no se indica nada en concreto (char a secas) depende del compilador, pero puede ser seleccionado.

§2  Los tres tipos char

Las constantes de un carácter, tales como 'A', '\t' y '007', son representados como valores enteros, int (signed).  En estos casos, si el valor es mayor que 127, el bit más alto es puesto a -1 ( = 0xFF), es decir, las constantes carácter cuyo valor ASCII es mayor de 127 se representan como números negativos, aunque esto puede ser desactivado declarando que los caracteres son unsigned por defecto.

Cualquiera de los tres tipos carácter, char, signed char y unsigned char, se almacenan en 8-bits (un byte) [2].


En los programas a C++, una función puede ser sobrecargada con argumentos de cualquiera de los tres tipos: char, signed char o unsigned char (porque son tipos distintos para el compilador). Por ejemplo, los siguientes prototipos de funciones son válidos y distintos:

void func(char ch);

void func(signed char ch);

void func(unsigned char ch);


Sin embargo, si existiera solo uno de dichos prototipos, podría aceptar cualquiera de los tres tipos carácter. Por ejemplo, el código que sigue sería aceptable (se produciría una conversión automática de tipo al pasar el argumento a la función):

void func(unsigned char ch);

 

void main(void) {

  signed char ch = 'x';

  func(ch);

}

§3  Constantes de carácter-ancho

El tipo de caracteres ancho se utiliza para representar juegos de caracteres que no caben en el espacio (1 byte) proporcionado por los carácter normales (char, signed char o unsigned char).

Nota histórica: en C clásico, un carácter ancho ocupa dos bytes, y cualquier constante carácter precedida por L es un carácter ancho, un tipo de dato denominado wchar_t,  que en realidad es un typedef definido en <stddef.h>.

En Borland C++ wchar_t está definida como: typedef unsigned short wchar_t;  para el caso de compilar como C. Recuerde que este compilador puede trabaja indistintamente con código C y C++, y que un unsigned short ocupa 2 bytes ( 2.2.4).


En C++  wchar_t es una palabra clave que representa un tipo especial, el carácter ancho o extendido. Su espacio de almacenamiento depende de la implementación (ver 2.2.1a1).  En el caso de BC++ 5.5 ocupa el mismo espacio que un int, es decir: 4 bytes. En las cadenas de caracteres anchos se ocupan igualmente 4 bytes por carácter.

Ejemplos:

wchar_t ch = L'A';

wchar_t *str = L"ABCD";

wchar_t nulo = L'\0'        // carácter nulo ancho

§4  Constantes multi-carácter

Las constantes mult-carácter consisten es un máximo de cuatro caracteres y son siempre valores de 32 bits (1 palabra del procesador de 32 bits = 4 octetos).  Por ejemplo, la constante  '\006\007\008\009'.

Nota: este tipo de constante es válido solamente en programas C++Builder y por tanto, no es portable a otros compiladores. Tanto en C como en C++ (Borland), las constantes multi-caracter son del tipo int.

  Inicio.


[1]  En C, las constantes simple-carácter son del tipo int.

[2]  Recuerde que el compilador Borland C++ permite compilar código C y C++ indistintamente. En el primer caso, el comportamiento de los programa C no es afectado por la diferencia entre los tres tipos char.