Tipos de Datos en C:
Introducción al lenguaje C
Qué aprenderás sobre el lenguaje C
¿Qué es el lenguaje C?
¿Cómo funcionan las computadoras?
¿Por qué aprender C?
Instalando C en Windows
Instalando C en Linux
Estructura de un programa C
Estructura de un programa C
Tipos de Datos en el lenguaje C
Tipos de datos
Tipo de dato void
Tipo de dato Enum
Tipo de dato char
Variables en el lenguaje C
Declaración de variables
Declaración avanzada de variables
Declaración de constantes
Preprocessor directives: Define
Conclusiones
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 55
Preguntas 13
Tipos de Datos en C:
Basic Types:
Aritmeticos:
(A) Valores enteros:
int 2 o 4 Bytes permite tener numeros negativos y positivos
2 Bytes -32,768 to 32,757
4 bytes -2,147,483,648 to 2,147,483
unsigned int 2 o 4 bytes no nos permite tener datos negativos
2 Bytes 0 to 65.535
4 bytes 0 to 4,294,967,295
short 2 Bytes
2 Bytes -32,768 to 32,767
unsigned short 2 Bytes 0 yo 65,535
long 8 Bytes
long 8 bytes -9223372036854775808 to 9223372036854775807
unsigned long 8 Bytes 0 to 18446744073709551615
(B) De punto FLorante:
float 4 Bytes 1.2E-38 to 3.4E+386 ( 6 decimal places)
double 8 Bytes 2.3E-308 to1.7E+30815 (15 decimal places)
long double 10 Bytes 3.4E-4932 to 1.1E+493219 (19 decimal places)
Siempre debes analizar cual usar… SIEMPRE!!!
Basic Types [Arithmetics]:
(A) Integers 2 Bytes or 4 Bytes
[int] -32,768 to 32,757 or -2,147,483,648 to 2,147,483,
[unsigned int] 0 to 65.535 or 0 to 4,294,967,295
[short] 32,768 to 32,767
[unsigned short] 0 to 65,535
8 Bytes
[long] -9223372036854775808 to 9223372036854775807
[unsigned long] 0 to 18446744073709551615
(B) Floats 4 Bytes
[float] 1.2E-38 to 3.4E+38 6 decimal places
8 Bytes
[double] 2.3E-308 to 1.7E+308 15 decimal places
10 Bytes
[long double] 3.4E-4932 to 1.1E+4932 19 decimal places
Con las capacidad de computo actual de una pc regular de escritorio, muchos programadores se olvidan de optimizar el tipo de variable a utilizar. Sin embargo, para software embebido o programación para con dispositivos limitados en recursos como la memoria, esto se vuelve esencial.
quizás le ahorro el cálculo a alguien:
256 * 256 = 65.536
65536 / 2 = 32.768
ACCIDENTE del 4 de Julio de 1996 en la European Space Agency (Esa) costando 370 MUSD por sobrepasar la capacidad de memoria de un dato:
-[ ] https://www.bbc.com/future/article/20150505-the-numbers-that-lead-to-disaster
😄
Basic Types:
ARITMETICOS
(A) Numeros enteros
int 4 Bytes: -2,147,483,648 to 2,147,483,647
unsigned int 4 Bytes: 0 to 4,294,967,295
/*El unsigned nos permite tener solo numero positivos*/
short 2 Bytes: -38,768 to 32,767
unsigned short 2 Bytes: 0 to 65,535
long 8 Bytes:
-9223372036854775808 to 9223372036854775807
unsigned long 8 Bytes 0 to 18446744073709551615
(B) de punto flotante
float 4 bytes: 1.2E-38 to 3.4E+38
6 decimal places
double 8 bytes: 2.3E-308 to 1.7E308
15 decimal places
long double 10 bytes: 3.4E-4932 to 1.1E+4932
19 decimal places```
La razón por la que caben esas cifras en cada uno de los diferentes tipos de datos está relacionada con el espacio que cada uno reserva en memoria, por ejemplo, en el caso de un int almacena 4 Bytes que sería el equivalente a 32 bits, como son valores binarios la forma de calcular el valor máximo a almacenar es tomando la base 2 y elevándola a 32(bits) de ahí se obtiene el valor máximo a almacenar (4’294,967,295).
* Aritmeticos:
* (A) Valores enteros:
* int: puede ser de 2 o 4 bytes, permite tener numeros negativos y positivos.
* 2 Bytes -32,768 to 32,757
* 4 bytes -2,147,483,648 to 2,147,483
* unsigned int: puede ser de 2 o 4 bytes, no permite datos negativos.
* 2 Bytes 0 to 65.535
* 4 bytes 0 to 4,294,967,295
* short 2 bytes
* 2 bytes -32,768 to 32,767
* unsigned short 2 bytes 0 to 65,535
* long 8 Bytes
* long 8 bytes -9223372036854775808 to 9223372036854775807
* unsigned long 8 bytes 0 to 18446744073709551615
* (B) De punto Flotante:
* float 4 bytes 1.2E-38 to 3.4E+386 ( 6 decimal places)
* double 8 bytes 2.3E-308 to1.7E+30815 (15 decimal places)
* long double 10 bytes 3.4E-4932 to 1.1E+493219 (19 decimal places)
Todos los valores numéricos son signed por defecto.
En C siempre tienes que pensar en el tipo de dato que vás a usar.
Que un tipo int sea de 2 o 4 bytes va a depender del compilador que estemos usando, aunque actualmente es un estándar usar números grandes, es decir un int de 4 bytes, un long de 8 bytes.
La razón por la que caben esas cifras en cada uno de los diferentes tipos de datos está relacionada con el espacio que cada uno reserva en memoria, por ejemplo, en el caso de un int almacena 4 Bytes que sería el equivalente a 32 bits, como son valores binarios la forma de calcular el valor máximo a almacenar es tomando la base 2 y elevándola a 32(bits) de ahí se obtiene el valor máximo a almacenar (4’294,967,295).
Basic Types [Arithmetics]:
(A) Integers 2 Bytes or 4 Bytes
[int] -32,768 to 32,757 or-2,147,483,648 to 2,147,483,
[unsigned int] 0 to 65.535 or 0 to 4,294,967,295
[short] 32,768 to 32,767
[unsigned short] 0 to 65,535
8 Bytes
[long] -9223372036854775808 to 9223372036854775807
[unsigned long] 0 to 18446744073709551615
(B) Floats 4 Bytes
[float] 1.2E-38 to 3.4E+386 decimal places
8 Bytes
[double] 2.3E-308 to1.7E+30815 decimal places
10 Bytes
[longdouble] 3.4E-4932 to 1.1E+493219 decimal places
Como hago para sacar los rangos de los bytes? veo que tal vez usa algún comando
Supongo que es algo con el compulador que estoy usando, pero aunque declaré una variable como sin signo, la operación se hizo como si nada:
#include <stdio.h>
int main(){
unsigned int entero1;
int entero2;
int suma;
printf("Introduzca el entero 1 \n");
scanf("%d", &entero1);
printf("Introduzca el entero 2 \n");
scanf("%d", &entero2);
suma = entero1 + entero2;
printf("La suma es: %d\n", suma);
}
Y el resultado:
Puntos de datos tipo de punto flotante.
Tipos de datos.
C es tipado, siempre se declara que tipo de dato se usará.
Saber siempre los rangos minimos & máximos de los valores del programa para asignarle un tipo de dato.
Basic Types:
Valores numéricos enteros(integer)
short 2 bytes. -32,767 to 32,767
unsigned int 2 bytes. 0 to 65,535
int 4 bytes. -2,147,483,684 to -2,147,483,684
unsigned int 4 bytes. 0 to 4,294,967,295
long 8 bytes.
unsigned long 8 bytes.
Valores numéricos decimales (float)
float 4 bytes. 6 lugares decimales
double 8 bytes. 15 lugareces decimales
long double 10 bytes. 19 lugares decimales```
Grande explicación y muy completa, bastante clara y entendible.
falto el long long int y el unsigned long long int
Los datos aritméticos que se van a manejar pueden ser valores de tipos enteros o de punto flotante.
Datos ariméticos: int, short, long (todos los aritméticos pueden llevar un unsigned)
datos flotantes: float, double, long double
Claro ahora comprendo más como se escribe un programa y que tipos de datos se utilizan para ello.
Tipos de datos en C
En conclusión, debemos ser conscientes de que tipos de datos usar para evitar el desperdicio de memoria en nuestro programa y evitar la pérdida de información o las limitaciones, entendido 😄
INT FLOAT
entendi esa referencia!!
:v
En C siempre tienes que pensar qué tipo de dato serán las variables.
En C debes de saber hasta dónde puede llegar una variable.
Tipos de datos
Valores entero
int 4 bytes -2 147 483 648 to 2 147 483 647
unsigned int 4 bytes 0 to 4 294 967 295
short 2 bytes -32 768 to 32 767
unsigned short 2 bytes 0 to 65 535
long 8 bytes -9 223 372 036 854 775 808 to 9 223 372 036 854 775 807
unsigned long 8 bytes 0 to 18 446 744 073 709 551 615
Valores flotantes
float 4 bytes 1.2E-38 to 3.4E+38 6 decimal places
double 8 bytes 2.3E-308 to 1.7E+308 15 decimal places
long double 10 bytes 3.4E-4932 to 1.1E+4932 19 decimal places
Hola a todos!
Gracias a la libreria limits.h podemos ver el rango con los que cuentan cada tipo de dato en C,
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>// Header: standar de entrada y salida
int main(){
printf("INT _MAX %i \n", INT_MAX);
printf("INT _MIN %d \n", INT_MIN);
printf("SHORT _MAX %d \n", SHRT_MAX);
printf("LONG MAX %d \n", LONG_MAX);
printf("CHAR _BIT %d \n", CHAR_BIT);
return 0;
}
Para los eruditos, 1 byte está compuesto de 8 bits es decir 8 espacios en memoria del código binario por ejemplo (10010011=>byte) y cada numero de 0 y 1 es un bit.
ahoraa es cuando te empiezan a temblar las piernas te lo aseguro pues las matematicas vienen y te pegan una envoltura y te desenvuelven horrible.
también se representa esto como centenares de millares de bytes hasta millones, como el byte es una unidad elemental de almacenamiento, se utilizan múltiplos para definir el tamaño de memoria central por ejemplo: KB (Kilobyte) = 1.024 bytes ^9, Megabyte (MB) = 1.024 X 1.024 bytes (2^20=1.048.576), GB=1.024MB (2^30=1.073.741.824)…
Te aconsejo que lo dejes o tomes el riesgo de perderte enn un mundo oscuro, mas que eso que mencionan como deep web…
En long double es el mas utilizado para temas financieros ya que la precisión es muy acertada.
creo que seria bueno que colocaras el código que escribes en la parte de recursos
Alguien mas usa en vez de bloc de notas el editor de codigo? (en mi caso sublime) porque el fondo es obscuro y no me cansa tanto como el notepad
en C es escencial que tipos de datos quiero y voy a usar.
Buena explicacion
Excelente explicación, sobre todo la funcionalidad de cada uno de los tipos de datos numéricos y en que casos pueden servir
Interesante manera de explicar esta información valiosa que en otros cursos solo la dan sin darle la importancia que tienen a la hora de realizar nuestros programas.
Grande explicación y muy completa, bastante precisa.
profe estoy tomando internet de las cosas con usted la mayoria de mis cursos fueron con usted tengo una duda o una consulta como podria comunicarme con usted es para una guia
Los tipos de datos son importantes saberlos, pero aun mas importante el espacio el que ocupa en memoria y como esto influye al compilar o al compilar un proyecto donde estemos gastando memoria, me ha pasado cuando programo en arduino en donde desperdicio memoria y ocupo mas de la que debería , muchas gracias gran explicación.
…
bueno aunque el arduino no le cabe nada de memoria jajaj
Aclara algunas dudas, espero que en los microcontroladores estandarizen los tipos de datos, también.
18… 🤔🤨… Sí! 18😅😂
Buenas como aporte, me pareció interesante explicar el porque de los números de datos que admiten cada tipo en C(no hablare de todas los tipos).
Esto es debido al numero de bytes, recordemos que cada byte son 8 bit, entre mas bits tengamos el numero que podremos representar sera mayor.
Tambien en el sistema binario el valor de cada bit segun su posicion lo podemos ver como 2 a la n potencia, donde n es la posicion.
2^0 = 1
2^1 = 2
2^2 = 4
etc.
Entonces cuando tenemos un variable con 4 bytes(32 bit) tenemos como mayor numero a mostrar 2^32 y de ahi sale el numero que Celis nos mostro.
Cabe decir, que cuando un tipo de variable no se especifica su tamaño (long, short o double), el compilador considera a esa variable de tipo long. En otras palabras, declarar una variable como long int es igual a declara una variable como int.
Hola, encontré un error en esta clase sobre los modificadores de rango:
El tipo long es para definir el tamaño de la variable en 4 Bytes (32 bits), no en 8 Bytes como se mencionó anteriormente. El tipo short es para 2 Bytes (16 bits) y double es para 8 Bytes (64 bits).
Fuentes:
Excelente explicación!
Tipos de datos de punto flotante.
¿Esta clase me la puedo saltar?
Es importante tener en cuenta el tamaño de los datos que se van a utilizar. Si es entero, flotante carácter.
gracias!
Como se podria hacer para estimar cual va a ser el numero maximo que necesitamos en nuestro desarollo?
Muy bien explicado, ahora se mas de C.
Una pequeña corrección en los rangos de las variables de punto flotante:
float 4 Bytes -3.4E+38 to 3.4E+38 6 cifras decimales
double 8 Bytes -1.7E+308 to 1.7E+308 15 cifras decimales
long double 10 Bytes -1.1E+4932 to 1.1E+4932 19 cifras decimales
por ejemplo, en el video dice que el rango de float es 1.2E-38 to 3.4E+38 6 cifras decimales y esto no puede ser pues el limite inferior 1.2E-38 significa 0.00…012 con 36 ceros entre el punto y el 12, lo que son mucho más que 6 cifras decimales, por todo lo demás muy buena clase!
Para los de Punto Flotante no hay numeros negativos?
Para float 4 Bytes da un rango de 0.00(37ceros)0012 a 3400(37ceros)00, pero con 6 lugares decimales, aun cuando el primer numero tiene 39 lugares decimales.
Alguien que entienda mi confusion? Gracias
Aritmeticos
Valores Enteros Int 2 o 4 bytes -32768 a 32767 -2147483648 a 2147483647
Unsigned int 2 o 4 bytes 0 a 65535 0 a 4294967295
Short 2 bytes
Unsigned short 2 bytes
Long 8 bytes -9223372036854775808 a 9223372036854775807
Unsigned long 8 bytes 0 a 18446744073709551615
Flotantes o de punto Flotante Float 4 bytes 1.2E-38 a 3.4E+38 6 decimal places
Double 8 bytes 2.3E-308 a 1.7E+308 15 decimal places
Long double 10 bytes 3.4E-4932 a 1.1E+4932 19 decimal places
Buena Practica: Antes de lanzar un codigo siempre hay que saber los rangos minimos y rangos maximos de tus variables
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.