Miguel Angel Lozano Alvarez
Jean Nuñez
Cool
Guillermo M
Creo que hay algunos datos incorrectos. Por la explicación del profesor, parece que los int siempre son de 4 bits, porque los enteros de 2 bits son de tipo short.
¿Cuáles son los tipos de datos en lenguaje C?
El lenguaje C es un lenguaje de programación tipado, lo que significa que cada variable debe declararse con un tipo de dato específico. Esto es crucial tanto para el correcto funcionamiento de tu código como para optimizar el uso de memoria. A lo largo de esta guía, exploraremos las diferentes categorías de tipos de datos en C y cómo elegir el más adecuado para tus necesidades de programación.
¿Qué son los tipos de datos aritméticos?
Los tipos de datos aritméticos en C son aquellos diseñados para almacenar valores numéricos. Estos se subdividen en:
Los enteros se pueden ajustar dependiendo de si necesitas o no incluir números negativos en tu programa. Incluso, puedes especificar el rango numérico, utilizando tipos de datos como unsigned int para números solo positivos.
¿Cómo elegir entre signed y unsigned?
Al seleccionar un tipo entre signed o unsigned, es esencial considerar el rango numérico de los datos que planeas manipular:
Signed Integers: Permiten representar tanto números negativos como positivos. Son ideales para cálculos como los que se requieren en un programa que maneja deudas o desplazamientos en coordenadas, donde los valores negativos son significativos.
Unsigned Integers: Solo permiten números positivos, expandiendo así el rango positivo disponible. Son útiles en situaciones donde los valores negativos no tienen sentido, como en conteos de elementos o cuando programamos sensores que solo reportan valores positivos.
¿Qué son los tipos de datos de punto flotante?
Para manejar números decimales y precisar cálculos aritméticos, C ofrece los tipos de datos de punto flotante:
Float: Ocupa 4 bytes y soporta hasta 6 posiciones decimales, ideal para cálculos rápidos donde la precisión extrema no es crítica.
Double: Ofrece el doble de precisión decimal que float, utilizando 8 bytes y manejando hasta 15 dígitos decimales, adecuado para aplicaciones que requieren cálculos medidos, como simulaciones científicas.
Long Double: Maximiza la precisión a 19 posiciones decimales distribuidas en 10 bytes. Este formato es óptimo para aplicaciones de alta precisión, como cálculos financieros complejos.
¿Por qué es crucial seleccionar el tipo de dato adecuado?
Elegir conscientemente el tipo de dato impacta en la eficiencia y fiabilidad de tus programas:
Gestión de Memoria: Usar tipos de datos con mayor capacidad del necesario ocasiona desperdicio de memoria, mientras que seleccionar un tipo con menos capacidad puede generar errores de cálculo o truncamiento de datos.
Rangos Precalculados: Prever el rango de valores en tus variables evita desbordamientos, problemas de almacenamiento y asegura que tu código funcione correctamente bajo todas las condiciones esperadas.
Exactitud de Cálculos: En aplicaciones precisas, como cálculos de nómina o de distancias en aplicaciones de sensores, es esencial que el tipo de dato asevere exactitud y no introduzca errores acumulativos por denominaciones incorrectas.
¿Qué prácticas se deben adoptar al programar en C?
Para garantizar calidad y optimización al programar en C:
Calcula rangos mínimos y máximos de las variables antes de implementarlas, permitiendo elegir adecuadamente el tipo de dato en función de las necesidades específicas.
Investiga las características de tu compilador, o cómo este maneja los tamaños y almacenamientos de datos, asegurando que las especificaciones de tu programa concuerden con el entorno de ejecución.
Controla las entradas de datos en formularios o sensores. Implementa restricciones que aseguren que los datos procesados se mantengan dentro de los rangos, previniendo bugs y sobrecargas de sistema.
Optimiza el uso de memoria: Selecciona el tipo de dato que mejor se adapta a las necesidades de la aplicación sin excesos que afecten la eficiencia.
Cada tipo de dato en C tiene su propósito particular, y el dominio de estos te permitirá escribir código robusto, preciso y eficiente. A medida que te familiarices con estos conceptos, serás capaz de optimizar tus programas, asegurando que produzcan resultados precisos y fiables.
Miguel Angel Lozano Alvarez
Jean Nuñez
Cool
Guillermo M
Creo que hay algunos datos incorrectos. Por la explicación del profesor, parece que los int siempre son de 4 bits, porque los enteros de 2 bits son de tipo short.
Royer Guerrero Pinilla
Valeria Vanesa Zalazar
Gracias por compartir tu apunte de la clase.
Lautaro Cabral
quizás le ahorro el cálculo a alguien: 256 * 256 = 65.536 65536 / 2 = 32.768
Andres Cueto Estrada
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
Valeria Vanesa Zalazar
No sabia de ese accidente, gracias por compartir la información, sin dudas no hay que dejar de lado nada al programar en C.
Juan Francisco
Interesante redaccion, se debe tener en cuenta esto del overflow y del numero 2.147.483.647.
Nuestro sistema informatico colapso varias veces por un error de almacenamiento y por no ver el futuro donde se mueven numeros muy grandes. Y si no solo fuera el sistema informatico, talves la Tierra o el tiempo colapsen en un momento dado de aqui a millones de anos.
Esteban Monguí Torres
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).
Mauricio Andres Pacheco Perez
así es, excelente aporte.
Valeria Vanesa Zalazar
Si así es, genial tu aporte, saludos.
Carlos Abel Tarazona Aranda
Valeria Vanesa Zalazar
Tu aporte me ayudó a realizar más rápido mi resumen de la clase. Gracias.
Jesus Alejandro Espinoza Hernandez
Como hago para sacar los rangos de los bytes? veo que tal vez usa algún comando
Mauricio Andres Pacheco Perez
jajaja a eso lo llamamos "la formula mágica"
Alexander Reyes
Rodrigo Rivas Martinez
Hola, tengo una duda, estaba leyendo un documento que habla justo sobre el tamaño en memoria de los valores int, short, long etc... y note que hay una diferencia, en el libro me dice que el valor "int" por defecto es de 2 bytes o 16 bits pero en el curso se menciona que el valor por defecto es de 4 bytes, entonces cual seria el mas correcto en la actualidad, o quizás el documento que estoy viendo esta un poco viejo y no esta actualizado, en fin agradezco cualquier comentario. (Agrego una imagen del documento) Muchas gracias y saludos!
Massimo Di Berardino
¡Hola @rivas060! Me parece que hay un error o está desactualizado el libro, porque efectivamente como menciona el profesor un int pesa 4 bytes tanto en arquitectura de 32 como 64 bits
Rodrigo Rivas Martinez
Correcto, muchas gracias por la aclaracion
Pepe Sosa
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:
Pedro Alvarado Garcia
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.
CAROLINA VARGAS NAVIA
Puntos de datos tipo de punto flotante.
LUIS MIGUEL GUERRERO GUTIERREZ
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
Henry Junior Aranzales Lopez
Gabriel Obregón
📝Tipos de Datos en C
🔹 Concepto clave
📌 C es un lenguaje tipado → cada variable necesita un tipo de dato. ✨ Importancia: ➡️ Correcto funcionamiento del programa. ➡️ Optimización de memoria.
🔹 Tipos de Datos Aritméticos
➤ Enteros (Integer)
🔢 Guardan números enteros.
📍 Ejemplos de uso:
➤ Punto Flotante (Floating Point)
🌊 Guardan números con decimales.
📍 Ejemplos de uso:
🔹 Elección: signed vs unsigned
🔀 Signed ✔️ Acepta negativos. ✔️ Útil en cálculos donde los negativos tienen sentido.
🔀 Unsigned ✔️ Solo positivos. ✔️ Aumenta rango positivo.
🔹 Importancia de elegir bien el tipo
🧠 Memoria → evitar desperdicio o truncamiento. 📏 Rangos → prevenir desbordamientos. 🎯 Precisión → indispensable en nóminas, sensores y simulaciones.
Daniel Enrique Astudillo Guzmán
Que tipo de valores dan un número negativo aparte de una resta en un microcontrolador u otro sistema embebido? :0
Juan Camilo Cuervo Say
Coordenadas, temperatura, altitud con respecto al mar.
Daniel Enrique Astudillo Guzmán
Genial muchas gracias compañerooo! :D
Roberto Arriaga
La pantalla es muy pequeña ¿no?,
después de tanto tiempo, Team Platzi no se ha dado cuenta¿?
Kevin Gomez
Hola, no comprendo por qué el int lo cambia de 2 bytes a 4 bytes. No explica por qué o en que usos es lo que cambia de bytes?
JOSE LUIS RODRIGUEZ AVILA
Me parece que la explicación está en el minuto 1:45, donde indica que depende del compilador que se utilice.
Luego, en el minuto 8:20 explica que el estandard es que las variables de tipo short son de 2Bytes, mientras que la de tipo int es de 4Bytes.
Espero que este aporte sirva para esclarecer la duda planteada.
Juan Felipe Angarita Lopez
El lenguaje de programación C proporciona varios tipos de datos para almacenar diferentes tipos de información. Aquí hay una explicación de los tipos de datos básicos en C:
Enteros: Los enteros representan números enteros sin parte decimal. Hay diferentes tamaños de enteros en C, que varían en la cantidad de memoria que ocupan y el rango de valores que pueden almacenar. Algunos de los tipos de datos enteros más comunes son:
int: Representa enteros con signo. Por lo general, ocupa 4 bytes en la mayoría de las plataformas y tiene un rango de alrededor de -2,147,483,648 a 2,147,483,647. short: Representa enteros cortos con signo. Normalmente, ocupa 2 bytes y tiene un rango de aproximadamente -32,768 a 32,767. long: Representa enteros largos con signo. Suele ocupar 4 bytes o más, dependiendo de la plataforma, y tiene un rango más amplio que el int. Caracteres: Los caracteres en C se representan mediante el tipo de dato char. Un char ocupa normalmente 1 byte de memoria y puede almacenar un único carácter. Los caracteres se pueden representar utilizando comillas simples, como 'a', 'b', etc.
Punto flotante: Los números con parte decimal se representan mediante tipos de datos de punto flotante. Los tipos de datos más comunes para números de punto flotante en C son:
float: Representa números de punto flotante con precisión simple. Ocupa normalmente 4 bytes y puede contener valores en un rango aproximado de ±3.4e-38 a ±3.4e38 con una precisión de aproximadamente 6 dígitos decimales. double: Representa números de punto flotante con precisión doble. Por lo general, ocupa 8 bytes y tiene un rango más amplio que float, con una precisión de aproximadamente 15 dígitos decimales. Booleanos: En C, el tipo de dato int se utiliza para representar valores booleanos. Por convención, se considera que el valor 0 representa falso, y cualquier otro valor representa verdadero. A menudo, se utilizan las constantes 0 y 1 para representar falso y verdadero, respectivamente. fuente chatgpt
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
:D
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```
Basic Types
* 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).