No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Tipos de datos

8/16
Recursos

Aportes 83

Preguntas 21

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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)

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.

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

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

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:
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```

Como hago para sacar los rangos de los bytes? veo que tal vez usa algún comando

<h3>Basic Types</h3>
* 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).

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.

Puntos de datos tipo de punto flotante.

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

Claro ahora comprendo más como se escribe un programa y que tipos de datos se utilizan para ello.

Excelente explicación!

INT FLOAT
entendi esa referencia!!
:v

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:

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

**Tipos de Datos Básicos en C: Tipos Aritméticos**

Los tipos de datos básicos en el lenguaje de programación C son esenciales para representar diferentes tipos de valores, ya sean enteros o de punto flotante. A continuación, se presenta una explicación corregida de los tipos aritméticos en C:

**(A) Valores Enteros:**

- **int:** Este tipo de dato ocupa 4 bytes en la memoria y puede almacenar valores en el rango de -2,147,483,648 a 2,147,483,647. Se utiliza para representar números enteros, positivos o negativos.

- **unsigned int:** Este tipo de dato también ocupa 4 bytes y puede almacenar valores desde 0 hasta 4,294,967,295. Se utiliza para representar números enteros sin signo, es decir, solo valores positivos.

- **short:** Un dato de tipo short ocupa 2 bytes y puede almacenar valores en el rango de -32,768 a 32,767. Al igual que "int", puede representar números enteros, positivos o negativos.

- **unsigned short:** Este tipo de dato utiliza 2 bytes y puede almacenar valores desde 0 hasta 65,535. Al igual que "unsigned int", se usa para representar números enteros sin signo.

- **long:** Un dato de tipo long utiliza 8 bytes y puede almacenar valores en el rango de -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807. Se emplea para manejar números enteros de mayor amplitud.

- **unsigned long:** Este tipo de dato, también de 8 bytes, puede almacenar valores desde 0 hasta 18,446,744,073,709,551,615. Se utiliza para representar números enteros sin signo de mayor rango.

**(B) Valores de Punto Flotante:**

- **float:** Un dato de tipo float ocupa 4 bytes y puede almacenar valores en el rango aproximado de 1.2E-38 a 3.4E+38, con una precisión de hasta 6 lugares decimales.

- **double:** El tipo double utiliza 8 bytes y puede almacenar valores en el rango aproximado de 2.3E-308 a 1.7E+308, con una precisión de hasta 15 lugares decimales.

- **long double:** Este tipo de dato utiliza 10 bytes y puede almacenar valores en el rango aproximado de 3.4E-4932 a 1.1E+4932, con una precisión de hasta 19 lugares decimales.

En resumen, los tipos aritméticos en C te permiten manejar una variedad de valores numéricos, ya sean enteros o de punto flotante. Es esencial seleccionar el tipo de dato adecuado según la magnitud y precisión de los valores que deseas almacenar o manipular en tus programas.

Types & Description
1
Basic Types

They are arithmetic types and are further classified into: (a) integer types and (b) floating-point types.

2
Enumerated types

They are again arithmetic types and they are used to define variables that can only assign certain discrete integer values throughout the program.

3
The type void

The type specifier void indicates that no value is available.

4
Derived types

They include (a) Pointer types, (b) Array types, © Structure types, (d) Union types and (e) Function types.

The array types and structure types are referred collectively as the aggregate types. The type of a function specifies the type of the function’s return value. We will see the basic types in the following section, where as other types will be covered in the upcoming chapters.

https://www.tutorialspoint.com/cprogramming/c_data_types.htm

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

Excelente clase

9 trilllones 223 mil 372 billones 036 mil 854 millones 775 mil 807

Les dejo el código si quieren imprimir un número inmenso…

#include <stdio.h>

int main() {
   unsigned long long num = 10000000000;

   printf("El número es: %llu\n", num);

   return 0;
}

Va de la mano con lo que dice de saber decidir que tipo de variable es para cada dato.

En cuestiones cientificas como calculos físicos y astrologicos, tambien sirve tener más de 6 lugares deciamles. Porque se requiere mayor precición.

Cuestiones financieras recomedable tener mas de 6 lugares decimales.

De tipo flotante o punto decimal. Tiene 6 pociciones decimales. Tipo double es de 8 bytes. Tiene 380 pociciones, para recorrer en lo positivo y negativo. Tiene 15 pociciones decimales. long double. No puede ser unsigned. De 10 bytes. 19 pociciones decimales.

Todos los tipos de datos van con letra minuscula. Todos los tipos de datos tiene su versión unsigned.

Todos los tipos de datos van con letra minuscula.

Tipo de dato short. Es de 2 bytes. Siempre lo he entendido como un int que tiene la mitad de memoria que tiene int.

Tipo de dato short. Es de 2 bytes. Siempre lo he entendido como un int que tiene la mitad de memoria que tiene int.

Escencial saber de que tamaño vas a estar usando tus tipos de dato.

En C siempre saber el tipo de dato que vas a usar. Siempre tienes que tener el control. Sino se tiene desbordamientos de memoria.

En C siempre tienes que pensar cuales son los valores que se van a almacenar en las variables. Siempre hay hacer los calculos. Antes de lanzad un codigo. Definir bien los requerimientos. Standar int de 4 bytes.

Antes de lanzar un codgio, hay que hacer los calculos. Por eso hay que definir bien los requerimientos. Para identificar los tipos de datos.

Cuando menciona lo del robot del lado izquierdo o derecho con valores positivos o negativos. Me recuerda a los vectores.

Unsigned int. Instrucción que no permite usar número negativos. De 0 a 65,535 o de 4,294,967,295

Tipos basicos. Almacenan información aritmetica.
Dividida en Aritmeticos o enteros. (int) y flotantes o decimales (float).
Int 2 a 4 bytes. De -32,768 a 32,767 o -2,147,483 a 2,147,483,647.

Tipos basicos. Almacenan información aritmetica. Dividida en Aritmeticos o enteros. (int) y flotantes o decimales (float). Int 2 a 4 bytes. De -32,768 a 32,767 o -2,147,483 a 2,147,483,647.

Algo a destacar, es que el tamaño de long depende si el sistema operativo es de 32 o 64 bits.
 
En el caso de los sistemas 32 bits, su tamaño será solamente de 4 bytes.

Super interesante los ejemplos para entender los tipos de datos!

Encontré algunas funciones para poder encontrar los valores que pueden almacenar las variables.

Tipos de datos

Recuerda que C es tipado, siempre hay que declarar que tipo de dato esperamos.

Basic Types:

En este se trabajra con datos aritmeticos y flotantes

  • Aritmeticos = int

    • Se trabajara de 2 a 4 bytes, es decir
    • Si no quiero trabajar con datos negativos pongo: unsigned int, al poner unsigned int y evitar los negativos, genero mas espacio para los positivos
    • short ⇒ Es de 2 bytes, hay claro unsigned short
    • long ⇒ Es de 8 bytes, esta su version: unsigned long
    • Una de las mejores practicas es saber cuales seran los rangos minimos y maximos de datos que correran en mi prograna, porque asi efectuo una gran vision de todo el prgrama y hasta el propio programa. No saber cual sera lo maximo y minimo de un programa es un gran problema, porque por ejemplo te pusiste a trabjar con hardware de 2 bytes, y puf, hiciste un codigo que guardara en memoria 40000, y uy mira… 2 bytes no llega a 40000, la cagaste. Esto tambien es imporatnte porque gracias a saber los valores maximos que puedo aceptar, puedo empezar a crear restricciones que ne permitan crear un programa sin que se rompa
    2 Bytes -32,768 to 32,757
                                                
    4 bytes -2,147,483,648 to 2,147,483,647
    
    unsigned int 2 bytes 0 to 65,535 
    unsigned int 4 bytes 0 to 4,294,967,295  
    
    long 8 bytes -9223372036854775808 to 9223372036854775807
                                            
    unsigned long 8 Bytes 0 to 18446744073709551615 
    
  • Float

    • float ⇒ 4 bytes
    • double ⇒ 8 bytes
    • long double ⇒ 10 bytes
    4 bytes 1.2E -38 to 3.4E+38 (6 decimal places)
    
    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)
    

Los datos aritméticos que se van a manejar pueden ser valores de tipos enteros o de punto flotante.

  • En C siempre se debe pensar cuales son los valores que se van a almacenar en las variables.
  • Es necesario conocer los rangos mínimos y máximos de los valores que se van a tener, ya que esto puede limitar los datos a almacenar.
  • Se pueden dan restricciones cuando se conocen los limites de los datos a almacenar.

Datos ariméticos: int, short, long (todos los aritméticos pueden llevar un unsigned)
datos flotantes: float, double, long double

Tipos de datos en C

Tabla completa

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 😄

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;
}

Es importante notar que aunque los data types básicos suelen tener el estándar del maximo de bytes **No es garantía que utilice la máxima cantidad de bytes** si quieres estar seguro de la cantidad de bytes que tendrá el número es mejor usar los data types de la librería <stdint.h>

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:

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