Menu / C++ / Lecciones / Tipos de datos.

Tipos de datos - C++.

Las variables en C/C++ siempre deben tener un tipo especificado, que deteminará cómo será almacenado ese valor en memoria y cómo se podrá tratar dicho valor a lo largo del programa.

Los tamaños predeterminados en memoria están especificados en Conceptos básicos, aunque serán tratados con mayor detalle aquí.

Se tratarán los datos de C++, que son los mismos que en C más el tipo bool y los tipos de datos con modificadores.

Tipo entero (int o signed int).

Se utiliza para guardar números sin decimales (enteros) con signo.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 4.294.967.296 posibles valores.

28 * 28 * 28 * 28 = 232 = 4.294.967.296
El rango de valores de una variable de tipo int o signed int va desde -2.147.483.648 hasta 2.147.483.647. (El 0 está incluido)
Su caracter de formateo en cadena es %i.
Declaración:

int var = 1;
signed int var = 3;

Tipo entero corto (short int o signed short int).

Se utiliza para guardar números sin decimales (enteros) utilizando la mitad de memoria que un entero con signo.

Los compiladores de C/C++ guardan en memoria 2 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 65.536 posibles valores.

28 * 28 = 216 = 65.536
El rango de valores de una variable de tipo short int o signed short int va desde -32.768 hasta 32.767. (El 0 está incluido)
Su caracter de formateo en cadena es %hi.
Declaración:

short int var = 1;
signed short int var = 3;

Tipo entero sin signo (unsigned int).

Se utiliza para guardar números sin decimales (enteros) sin signo.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 4.294.967.296 posibles valores.

28 * 28 * 28 * 28 = 232 = 4.294.967.296
El rango de valores de una variable de tipo unsigned int va desde 0 hasta 4.294.967.295. (El 0 está incluido)
Su caracter de formateo en cadena es %u.
Declaración:

unsigned int var = 4;

Tipo entero corto (unsigned short int).

Se utiliza para guardar números sin decimales (enteros) utilizando la mitad de memoria que un entero sin signo.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 65.536 posibles valores.

28 * 28 = 216 = 65.536
El rango de valores de una variable de tipo unsigned short int va desde 0 hasta 65.535. (El 0 está incluido)
Su caracter de formateo en cadena es %hu.
Declaración:

unsigned int var = 1;

Tipo entero largo (long int o signed long int).

Se utiliza para guardar números sin decimales (enteros) utilizando el doble de memoria que un entero con signo.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 4.294.967.296 posibles valores.

28 * 28 * 28 * 28 = 232 = 4.294.967.296
El rango de valores de una variable de tipo long int o signed long int va desde -2.147.483.648 hasta 2.147.483.647. (El 0 está incluido)
Su caracter de formateo en cadena es %li.
Declaración:

long int var = 1;
signed long int var = 3;

Tipo entero largo sin signo (unsigned long int).

Se utiliza para guardar números sin decimales (enteros) utilizando el doble de memoria que un entero sin signo.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 4.294.967.296 posibles valores.

28 * 28 * 28 * 28 = 232 = 4.294.967.296
El rango de valores de una variable de tipo long int o signed long int va desde 0 hasta 4.294.967.296. (El 0 está incluido)
Su caracter de formateo en cadena es %lu.
Declaración:

unsigned long int var = 1;

Tipo entero muy largo (long long int o signed long long int).

Se utiliza para guardar números sin decimales (enteros) utilizando el doble de memoria que un entero sin signo.

Los compiladores de C/C++ guardan en memoria 8 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 18.446.744.073.709.551.616 posibles valores.

28 * 28 * 28 * 28 * 28 * 28 * 28 * 28 = 264 = 18.446.744.073.709.551.616
El rango de valores de una variable de tipo long int o signed long int va desde -9.223.372.036.854.775.808‬ hasta 9.223.372.036.854.775.807. (El 0 está incluido)
Su caracter de formateo en cadena es %lli.
Declaración:

long long int var = 1;
signed long long int var = 3;

Tipo entero muy largo sin signo (unsigned long long int).

Se utiliza para guardar números sin decimales (enteros) utilizando el doble de memoria que un entero sin signo.

Los compiladores de C/C++ guardan en memoria 8 bytes de almacenamiento para guardar este tipo de dato, por lo que en él caben un total de 18.446.744.073.709.551.616 posibles valores.

28 * 28 * 28 * 28 * 28 * 28 * 28 * 28 = 264 = 18.446.744.073.709.551.616
El rango de valores de una variable de tipo long int o signed long int va desde 0 hasta 18.446.744.073.709.551.615. (El 0 está incluido)
Su caracter de formateo en cadena es %llu.
Declaración:

unsigned long long int var = 1;

Tipo flotante (float).

Se utiliza para guardar números con decimales.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato.

No se especifica cuántos valores caben en este tipo de dato porque el rango varía en función de la cantidad de decimales que se apliquen al número.
Su caracter de formateo en cadena es %f, además se puede especificar cuántos decimales se quieren mostrar de la siguiente manera: %[dígitos de la parte entera].[dígitos de la parte decimal]f.

Ejemplo con 2 digitos enteros y 2 decimales: %2.2f
Ejemplo con digitos indeterminados enteros y 3 decimales: %.3f
Ejemplo con digitos por defecto: %f
Declaración:

float var = 1.0;

Tipo doble (double).

Se utiliza para guardar números con decimales y con el doble de precisión que con float.

Los compiladores de C/C++ guardan en memoria 4 bytes de almacenamiento para guardar este tipo de dato.

Se podría decir que double es un long float y que por eso su caracter de formateo es %lf.

No se especifica cuántos valores caben en este tipo de dato porque el rango varía en función de la cantidad de decimales que se apliquen al número.
Su caracter de formateo en cadena es %lf, además se puede especificar cuántos decimales se quieren mostrar de la siguiente manera: %[dígitos de la parte entera].[dígitos de la parte decimal]lf.

Ejemplo con 2 digitos enteros y 2 decimales: %2.2lf.
Ejemplo con digitos indeterminados enteros y 3 decimales: %.3lf.
Ejemplo con digitos por defecto: %lf.
Declaración:

double var = 1.0;

Tipo bool (booleano).

Se utiliza para guardar un valor booleano.

Los compiladores de C/C++ guardan en memoria 1 bit de almacenamiento para guardar este tipo de dato.

El tipo de dato bool solo tiene 2 valores, true o false, que en realidad mirando niveles de programación más bajos, estos valores tan sólo son alias de los valores 1 y 0.

21 = 2.
Para formatear el tipo de dato bool se utiliza el mismo formateo que los enteros: %i.
Declaración:

bool var = true;

Tipo char (carcater).

Se utiliza para guardar un caracter ASCII.

Los compiladores de C/C++ guardan en memoria 1 byte de almacenamiento para guardar este tipo de dato.

De los 255 posibles valores, los legibles del tipo de dato char son los siguientes:

!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~


ƒ
ˆ
Š
Œ

Ž


˜
š
œ

ž
Ÿ
 
¡
¢
£
¤
¥
¦
§
¨
©
ª
«
¬
­
®
¯
°
±
²
³
´
µ
·
¸
¹
º
»
¼
½
¾
¿
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
Ò
Ó
Ô
Õ
Ö
×
Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
Para formatear el tipo de dato char se utiliza el formato %c.
Declaración:

char var = 'S';

Tipo auto (Automatico).

Declara una variable en la que no se especifica tipo, pero sí se le asigna un tipo automáticamente en tiempo de ejecución.

Declaración:

auto var = "Cadena"; // la variable será de tipo 'const char *'
Anterior Siguiente.