Este documento describe los tipos de datos fundamentales en C++, incluyendo enteros, caracteres, números de punto flotante, booleanos y void. Explica que los tamaños de los tipos primitivos pueden variar según la arquitectura, pero C++ establece garantías mínimas para cada tipo. También cubre el tipo wchar_t para caracteres Unicode, el uso de void para funciones sin valor de retorno, y el valor NULL para representar la ausencia de valor.
1. TIPOS DE DATOS DE C++
GARCIA GUZMAN ASTRID ALEXANDRA
TORRES CRUZ BRYAN GIOVANNI
2.
3. TIPOS DE DATOS
• C++ tiene los siguientes tipos fundamentales:
• caracteres: char (también es un entero), wchar_t
• Enteros: short, int, long, long long
• Números en coma flotante: float, double, long double
• Booleanos: bool
• Vacío: void
• El modificador unsigned se puede aplicar a enteros para obtener números sin signo (por
omisión los enteros contienen signo), con lo que se consigue un rango mayor de números
naturales.
4. TAMAÑOS ASOCIADOS
• Según la máquina y el compilador que se utilice los tipos primitivos pueden ocupar
un determinado tamaño en memoria. La siguiente lista ilustra el número de bits que
ocupan los distintos tipos primitivos en la arquitectura x86.
• Otras arquitecturas pueden requerir distintos tamaños de tipos de datos primitivos.
C++ no dice nada acerca de cuál es el número de bits en un byte, ni del tamaño de
estos tipos; más bien, ofrece solamente las siguientes "garantías de tipos":
5. • De acuerdo al estándar C99, un tipo char debe ocupar exactamente un byte compuesto de
un mínimo de 8 bits independientemente de la arquitectura de la máquina.
• El tamaño reconocido de char es de 1. Es decir, sizeof(char) siempre devuelve 1.
• Un tipo short tiene al menos el mismo tamaño que un tipo char.
• Un tipo long tiene al menos el doble tamaño en bytes que un tipo short.
• Un tipo int tiene un tamaño entre el de short y el de long, ambos inclusive,
preferentemente el tamaño de un apuntador de memoria de la máquina. Su valor
máximo es 2147488281, usando 32 bits.
• Un tipo unsigned tiene el mismo tamaño que su versión signed.
6. WCHAR_T
• Para la versión del estándar que se publicó en 1998, se decidió añadir el tipo de dato
wchar_t, que permite el uso de caracteres UNICODE, a diferencia del tradicional
char, que contempla simplemente al código de caracteres ASCII extendido. A su vez,
se ha definido para la mayoría de las funciones y clases, tanto de C como de C++,
una versión para trabajar con wchar_t, donde usualmente se prefija el carácter w al
nombre de la función (en ocasiones el carácter es un infijo). Por ejemplo:
• strcpy - wstrcpy
• std::string - std::wstring
• std::cout - std::wcout
7. LA PALABRA RESERVADA "VOID"
• La palabra reservada void define en C++ el concepto de no existencia o no atribución
de un tipo en una variable o declaración. Es decir, una función declarada como void
no devolverá ningún valor. Esta palabra reservada también puede usarse para
indicar que una función no recibe parámetros, como en la siguiente declaración: int
funcion (void);
• Aunque la tendencia actual es la de no colocar la palabra "void".
8. • Además se utiliza para determinar que una función no retorna un valor, como en:
• void funcion (int parametro);
• Cabe destacar que void no es un tipo. Una función como la declarada anteriormente no
puede retornar un valor por medio de return: la palabra clave va sola. No es posible una
declaración del tipo: void t; //Está mal
• En este sentido, void se comporta de forma ligeramente diferente a como lo hace en C,
especialmente en cuanto a su significado en declaraciones y prototipos de funciones.
Sin embargo, la forma especial void * indica que el tipo de datos es un puntero. Por
ejemplo: void *memoria;
9. • Indica que memoria es un puntero a alguna parte, donde se guarda información de
algún tipo. El programador es responsable de definir estos "algún", eliminando toda
ambigüedad. Una ventaja de la declaración "void *" es que puede representar a la
vez varios tipos de datos, dependiendo de la operación de cast escogida. La memoria
que hemos apuntado en alguna parte, en el ejemplo anterior, bien podría almacenar
un entero, un flotante, una cadena de texto o un programa, o combinaciones de
estos. Es responsabilidad del programador recordar qué tipo de datos hay y
garantizar el acceso adecuado.
10. LA PALABRA "NULL"
• Además de los valores que pueden tomar los tipos anteriormente mencionados, existe un valor llamado NULL, sea el
caso numérico para los enteros, carácter para el tipo char, cadena de texto para el tipo string, etc. El valor NULL,
expresa, por lo regular, la representación de una Macro, asignada al valor "0".
• Tenemos entonces que:
• void* puntero = NULL;
• int entero = NULL;
• bool boleana = NULL;
• char caracter = NULL;
• El valor de las variables anteriores nos daría 0. A diferencia de la variable "caracter", que nos daría el equivalente a
NULL, '0', para caracteres.