Anuncios

Bienvenidos sean a este post, hoy veremos los tipos de datos que disponemos.

Anuncios
Anuncios

Si bien ya las mencionamos en este post, hoy nos centraremos en como se componen y para que sirven, pero en realidad el tipo de dato es para que nosotros como humanos podamos interpretarlos pero para el ordenador son solo una secuencia de digitos binarios, recordemos que un bit equivale al 1 o 0 del codigo binario y el conjunto de 8 bits nos da un byte, siendo el byte la unidad mas basica para manejar datos, a su vez los bytes son tratados individualmente, cuando son pares se los llama words de 16 bits, cuando son cuadruples son llamados words de 32 bits y en octetos son denominados words de 64 bits, y todas estas combinaciones de tamaños se utilizan para:

  • Intrucciones del CPU
  • Direcciones para las ubicaciones de datos en el ordenador
  • Valores de datos
Anuncios

Si bien nosotros no interactuaremos con estos valores directamente, dado que el compilador se encarga de transformar nuestras instrucciones de C en formato binario para que puedan ser interpretadas y comprendidas por el CPU, y a su vez muchas de nuestras instrucciones saben perfectamente lo que se debe hacer en memoria, mas adelante veremos que no es tan asi pero eso sera otro tema, pasemos a ver un poco mas en detalle sobre los tipos que disponemos.

Anuncios

Numeros enteros

Estos son denominados como int por su nombre en Ingles, Integer, y solamente representan un numero entero sin decimales, si bien la cantidad de memoria que utilizan esta pensado para valores solamente positivos puede almacenar valores negativos y positivos, su capacidad maxima de almacenamiento es de 65535 si solo almacena numeros positivos pero si almacena numeros con ambos signos estos seran:

  • -32767 para los valores negativos
  • 32767 para los valores positivos
Anuncios

Tambien disponemos de dos tipos de valores enteros mas, estos se denominan:

  • short, habitualmente denominado como entero corto
  • long, denominado como entero largo
Anuncios

Esto es asi porque solamente manejan valores enteros pero short tiene un tamaño de 32767, en cambio long tiene el mismo tamaño como int pero en conjunto estos dos nos permiten reservar mas espacio en memoria dando mas capacidad de almacenamiento.

Anuncios

Numeros con fracciones o decimales

En este caso seran todos los numeros que si posean decimales, estos se denominan como float (flotantes) o como double (dobles), la diferencia principal entre ambos es que el segundo tipo posee mas precision y memoria que el primero, el tipo float tiene un tamaño de 4294967295 y el double un tamaño de 18446744073709551615, en cualquiera de los dos casos nos permiten almacenar tanto los valores positivos como los negativos, inclusive nos permite almacenar este valor para pi: 3.1415926535897932384626433.

Anuncios

Caracteres

Esta es la forma mas basica de una cadena para C, si bien se la denomina char esta no es por character, caracter en ingles, sino mas bien por CHaracter ARray, es decir Array de Caracteres, donde las cadenas o string son basicamente valores continuos de caracteres pero de esto hablaremos un poco mas adelante, su tamaño es de 255, es decir que podra almacenar hasta 255 letras.

Anuncios

Booleanos

Los valores de tipo booleano son basicamente los valores true o false, tambien se reprensentan como 1 o 0, en algunos otros lenguajes represntan a true con el valor de 0 y cualquier otro valor como false, pero basicamente se manejara entre estos dos, el tamaño es definido por el compilador pero en general se utiliza un numero entero.

Anuncios

Direcciones

Estos valores son las representaciones de las direcciones de memoria en el ordenador, si bien C nos permite poder acceder y direccionar a estas ubicaciones en memoria, en el resto de los lenguajes se hace automaticamente y es un tema que no debe preocuparnos pero como mencionamos anteriormente cuando hablemos de los apuntadores este tipo de dato entrara en vigencia.

Anuncios

Cuando hablamos de los numeros dijimos que podemos almacenar valores ya sean con signo, positivo y negativo, o sin signo (es decir solo positivos), para ello se utilizan dos palabras claves:

  • signed, habilita valores positivos y negativos
  • unsigned, habilita solo valores positivos
Anuncios

En el caso de los valores enteros, int, para aprovechar una mayor cantidad de memoria son de manera predeterminada unsigned pero si necesitamos representar con signo deberemos agregar la palabra signed delante del tipo:

signed int valor = -32;
Anuncios

Estas dos palabras tambien afectan a los tipos con decimales, y como dijimos dara una mayor capacidad de memoria si le decimos que no debe aceptar valores negativos.

Anuncios

Para saber del tamaño de una variable podemos utilizar un operador llamado sizeof, para entenderlo vamos a analizar un ejemplo, en este caso crearemos un archivo nuevo al cual llamaremos ejemplo03.c y le agregaremos el siguiente codigo:

ejemplo03.c

#include <stdio.h>

void funcion(char* texto, int valor, float valor2)
{
	printf("%s\t%i\n", texto, sizeof(texto));
	printf("%i\t%i\n", valor, sizeof(valor));
	printf("%1.1f\t%i\n", valor2, sizeof(valor2));
	printf("%x\n",&texto);
}

int main()
{
	funcion("Prueba",1,2.2);
	return 0;
}
Anuncios

Aqui vamos a ver varias cosas, y unas muy interesantes, lo primero que tenemos es una funcion llamada funcion, lo se es muy original 🙄, en ella recibiremos tres tipos de valores:

  • texto, esta es de tipo char y de esta forma nos permite recibir texto y no solo caracteres
  • valor, esta sera de tipo int y sera para valores enteros
  • valor2, esta sera de tipo float y sera para recibir valores con decimales
Anuncios

Luego tenemos las instrucciones para mostrar los valores recibidos, analicemos la primer linea:

printf("%s\t%i\n", texto, sizeof(texto));
Anuncios
Anuncios

Observen que usamos el operador %s para indicar que este valor sera de tipo string o cadena, luego pasamos una secuencia de escape para pasar un tab para usar un operador que mostrara un valor de tipo int y por ultimo otra secuencia de escape para la nueva linea, esto sera lo que mostraremos, despues pasamos los valores para cada operador en el mismo orden, en el primer caso sera el valor que pasaremos al momento de usar la funcion, y luego pasamos el valor que nos devuelve el metodo sizeof aplicado a la variable texto, la siguiente linea hace lo mismo pero usamos el operador %i para indicar que el valor recibido es de tipo int, siendo la unica diferencia entre esta linea y la anterior, despues tenemos otra linea que hace lo mismo pero con una particularidad:

%1.1f
Anuncios

Este operador no solamente indica que el valor sera de tipo float sino que a su vez por medio de esa numeracion le decimos que debe usar un solo valor para el entero y uno solo para el decimal, el resto de la linea sigue exactamente igual a las vistas anteriormente, por ultimo tenemos esta linea:

printf("%x\n",&texto);
Anuncios

En esta le decimos que el valor a mostrar es de tipo hexadecimal y a la variable texto le agregamos un operador especial como es el ampersand (&), este es para obtener la direccion de memoria donde esta almacenada el valor de la variable texto, se lo denomina como operador de apuntador pero este es un tema que veremos mas adelante, por el momento este operador solo hara eso, siguiendo con el codigo en el main hacemos un llamado a esta funcion y le pasamos los tres valores, compilemos y ejecutemos el codigo para ver su salida:

tinchicus@dbn001vrt:~/lenguajes/C$ ./prog/ejemplo03 
Prueba	8
1	4
2.2	4
f73cbe78
tinchicus@dbn001vrt:~/lenguajes/C$
Anuncios

Observen que vemos los distintos tipos, sus respectivos tamaños en bytes y por ultimo la direccion en memoria donde esta ubicado uno de los valores.

Anuncios

En resumen, hoy hemos visto de forma basica los tipos de datos que disponemos, cuantos son, como se componen, algunos conceptos mas y un pequeño ejemplo para ver no solo como trabaja el operador sizeof sino tambien varias formas de trabajar con printf y como ver un valor de tipo de direccion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario