No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Tipos de datos

8/16
Recursos

Aportes 55

Preguntas 13

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

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).

<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).

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.

  • 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

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

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 馃槃

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

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:

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