Variables y tipos de datos

En este vídeo revisamos los tipos de datos que nos podemos encontrar en C. Ya mostré algunos en el episodio anterior pero hoy concreto los tipos de entero que hay. Y hablamos de cómo declarar, asignar y obtener el valor de variables.

En C, trabajar con la memoria es fundamental para manipular datos durante la ejecución de un programa. La memoria RAM es un recurso temporal donde almacenamos valores que necesitamos mientras el programa está activo, como resultados intermedios de cálculos complejos o datos de entrada proporcionados por el usuario. Para manejar esta memoria de forma organizada, utilizamos variables, que son identificadores que reservan un espacio específico para guardar un tipo determinado de dato, ya sea un número, un carácter o un valor flotante.

Declarar una variable en C implica especificar primero el tipo de dato que queremos almacenar y luego darle un nombre único que la identifique dentro del ámbito donde se usa. Por ejemplo, para guardar un carácter podemos declarar char x; y para un número entero int y;. Es importante que el nombre de la variable no se repita en el mismo contexto para evitar conflictos.

Antes de profundizar en las variables, conviene recordar que podemos incluir comentarios en el código usando //. Estos comentarios son ignorados por el compilador y sirven para aclarar el propósito de ciertas líneas o bloques de código para quienes lo leen.

En cuanto a los tipos de enteros, C ofrece varias opciones que varían en tamaño y rango. Tenemos el short (o short int), que suele ocupar 16 bits y permite almacenar valores aproximadamente entre -32,000 y 32,000. El tipo int es el entero estándar, generalmente de 32 bits, con un rango que va desde alrededor de -2,000 millones hasta 2,000 millones. Por último, el long (o long int) suele ocupar 64 bits, permitiendo almacenar números extremadamente grandes, tanto positivos como negativos.

Además, existe la variante unsigned para estos tipos, que indica que la variable no almacenará números negativos. Al no reservar un bit para el signo, el rango de valores positivos se duplica. Por ejemplo, un unsigned short puede almacenar valores desde 0 hasta aproximadamente 65,500, y un unsigned int hasta cerca de 4,000 millones.

Una vez declaradas las variables, podemos asignarles valores usando el operador =. Por ejemplo, x = 'C'; asigna el carácter 'C' a la variable x, y y = 25; asigna el número 25 a y. Estas asignaciones deben terminar con un punto y coma para indicar el fin de la instrucción.

Las variables también pueden usarse en expresiones para realizar cálculos. Por ejemplo, podemos declarar otra variable z y asignarle el doble del valor de y con z = 2 * y;. Esto demuestra cómo podemos combinar variables y operadores aritméticos para manipular datos.

Para visualizar los valores almacenados en las variables, utilizamos la función printf. Esta función permite imprimir texto y valores en la consola. Para incluir el valor de una variable dentro de un texto, usamos los placeholders, que son secuencias especiales dentro de la cadena de texto que indican dónde debe insertarse el valor de una variable.

El placeholder comienza con el símbolo %, seguido de una letra que indica el tipo de dato. Por ejemplo, %d se usa para enteros y %c para caracteres. Si queremos imprimir el valor de y junto con un mensaje, escribimos:

printf("Y igual a %d\n", y);

Aquí, %d será reemplazado por el valor de y. Si queremos imprimir un símbolo % literal, escribimos %%.

Podemos imprimir varias variables en un mismo printf incluyendo tantos placeholders como variables y separando cada variable con comas después de la cadena de texto. Por ejemplo:

printf("Y igual a %d y X igual a %c\n", y, x);

Esto imprimirá el valor de y y luego el valor de x en el orden correspondiente a los placeholders.

Además de las variables locales, podemos pasar datos a funciones mediante parámetros. Declarar parámetros en una función es similar a declarar variables, especificando el tipo y el nombre. Por ejemplo, para crear una función que reciba un nombre y una edad y los imprima, podemos definirla así:

void imprimirDatos(int edad, char *nombre) {
    printf("Hola, tu nombre es %s y tu edad es %d.\n", nombre, edad);
}

Aquí, edad es un entero y nombre es un puntero a caracteres, que representa una cadena de texto. Dentro de la función usamos %s en printf para imprimir la cadena.

Para llamar a esta función, simplemente pasamos los argumentos correspondientes:

imprimirDatos(20, "Pepito");

Esto mostrará en pantalla: Hola, tu nombre es Pepito y tu edad es 20.

Así, al combinar variables, asignaciones, impresión y parámetros en funciones, podemos construir programas en C que manipulen datos de forma dinámica y presenten resultados personalizados según la entrada recibida.

Lista de reproducción
  1. 1
    Instalar CodeBlocks
    15 minutos
  2. 2
    Funciones y hola mundo
    17 minutos
  3. 3
    Variables y tipos de datos
    17 minutos
  4. 4
    Condicionales y operadores lógicos
    16 minutos
  5. 5
    Bucles
    11 minutos
  6. 6
    Punteros
    12 minutos
  7. 7
    Arrays
    14 minutos
  8. 8
    Estructuras
    12 minutos
  9. 9
    Otras construcciones de C
    9 minutos
  10. 10
    Memoria dinámica
    8 minutos
  11. 11
    El preprocesador (parte 1)
    10 minutos
  12. 12
    El preprocesador (parte 2)
    9 minutos
  13. 13
    Archivos de cabecera y múltiples .c (parte 1)
    8 minutos
  14. 14
    Archivos de cabecera y múltiples .c (parte 2)
    9 minutos
  15. 15
    C desde la línea de comandos (parte 1)
    8 minutos
  16. 16
    C desde la línea de comandos (parte 2)
    9 minutos
  17. 17
    Break y continue
    10 minutos
  18. 18
    Goto
    13 minutos
  19. 19
    Manipulación de bits
    15 minutos
  20. 20
    Máscaras de bit
    19 minutos
  21. 21
    Archivos (1): fopen y fclose
    13 minutos
  22. 22
    Archivos (2): leer con fgetc
    9 minutos
  23. 23
    Archivos (3): fseek y ftell
    11 minutos
  24. 24
    Archivos (4): leer con fgets
    9 minutos
  25. 25
    Archivos (5): fputc y fputs
    7 minutos
  26. 26
    Archivos (6): volcar en archivos con fwrite
    10 minutos
  27. 27
    Archivos (7): fread, fwrite y los arrays
    10 minutos
  28. 28
    Archivos (8): entrada estándar y salida estándar
    9 minutos
  29. 29
    Archivos (9): buffers
    14 minutos
  30. 30
    Archivos (y 10): otras funciones útiles con archivos
    5 minutos
  31. 31
    printf (1)
    18 minutos
  32. 32
    printf (parte 2)
    12 minutos
  33. 33
    scanf (parte 1)
    17 minutos
  34. 34
    scanf (parte 2)
    17 minutos
  35. 35
    fprintf, sprintf y snprintf
    8 minutos
  36. 36
    Tipos de datos opacos
    13 minutos
  37. 37
    Bibliotecas estáticas
    13 minutos
  38. 38
    Bibliotecas dinámicas
    15 minutos
  39. 39
    Más flags: i mayúscula (include), wall, werror, pedantic...
    12 minutos
  40. 40
    pkg-config
    12 minutos
  41. 41
    Make
    17 minutos
  42. 42
    GDB
    21 minutos
  43. 43
    Variables globales
    6 minutos
  44. 44
    extern
    9 minutos
  45. 45
    Funciones variádicas
    12 minutos
  46. 46
    El optimizador de GCC y la opción -O
    12 minutos
  47. 47
    Volatile
    6 minutos