Tipos
-----

La razón por la cual C++ provee más de una alternativa para representar los enteros, los naturales y  los reales, es para permitirle al programador aprovechar las características del hardware sobre el cual está trabajando. En muchas máquinas, hay diferencias significativas sobre los requerimientos de memoria, tiempos de acceso a memoria, y velocidad de computo asociada a los diferentes tipos fundamentales. Si usted conoce la máquina, es fácil seleccionar la representación más apropiada.

Los tamaños de los objetos C++ son expresados en terminos de múltiplos del tamaño de un char, por definición este tamaño es 1.

Esto es lo que se garantiza acerca de los tamaños de los tipos fundamentales:

1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
1 <= sizeof(bool) <= sizeof(long)
sizeof(char) <= sizeof(wchar_t) <= sizeof(long)
sizeof(float) <= sizeof(double) <= sizeof(long double)
sizeof(N) = sizeof(signed N) = sizeof(unsigned N)

Donde N puede ser char, short int, int o long int.

Los tipos fundamentales pueden mezclarse libremente en asignaciones y expresiones. Cada vez que es posible, los valores se convierten de modo que no se pierda información.

Conversión Explícita de tipos
-----------------------------
El compilador no sabe el tipo de un objeto apuntado por un puntero void*. Tampoco puede saber si el entero 0xff00 es una dirección de memoria valida. En consecuencia, la correcta conversion queda completamente en manos del programador. La conversión explícita, comunmente llamada Casting, suele ser esencial, aunque su uso exagerado es una fuente común de errores.

El operador static_cast convierte valores de tipos relacionados tales como un puntero de un tipo a otro puntero en la misma jerarquía, un tipo númerico a un enumerativo, o de un real a otro tipo númerico.
El operador reinterpret_cast realiza conversiones entre tipos no relacionados, tales como un entero a un puntero, o un puntero a otro puntero de tipo no relacionado.

De C, C++ hereda la notacion (T) e, la cual realiza cualquier conversion que puede ser expresada como una conbinación de static_cast, reinterpret_cast y const_cast para hacer un valor de tipo T desde la expresion e.

Referencia: The C++ Programming Language - Bjarne Stroustrup

    Source: geocities.com/gmorgolock/cursoc

               ( geocities.com/gmorgolock)