← C EspañolChapter 02 of 13

Variables y Tipos de Datos

## Objetivos de Aprendizaje - Declarar e inicializar variables - Comprender los tipos primitivos - Dominar la conversión de tipos - Aprender sobre constantes ## Variables ### Declaración ```c int age; // Declaración age = 25; // Asignación int score = 100; // Declaración + Inicialización ``` ### Reglas de Nombres - Comenzar con letra o guión bajo - Pueden contener números (después del primer carácter) - No usar palabras reservadas - Distingue mayúsculas de minúsculas ```c int age; // Válido int _count; // Válido int $total; // Válido (pero evitar) int 2ndPlace; // Inválido int class; // Inválido (palabra reservada) ``` ## Tipos de Datos Primitivos ### Tipos Enteros | Tipo | Tamaño | Rango | |------|--------|-------| | `char` | 1 byte | -128 a 127 | | `short` | 2 bytes | -32,768 a 32,767 | | `int` | 2-4 bytes | Depende del sistema | | `long` | 4-8 bytes | Depende del sistema | | `long long` | 8 bytes | Muy grande | ```c char c = 'A'; short s = 32000; int i = 2000000; long l = 9000000000L; long long ll = 9000000000000000000LL; ``` ### Tipos sin Signo ```c unsigned int u = 100; unsigned char uc = 255; unsigned long ul = 4000000000UL; ``` ### Tipos de Punto Flotante | Tipo | Tamaño | Rango Típico | |------|--------|--------------| | `float` | 4 bytes | 1.2e-38 a 3.4e38 | | `double` | 8 bytes | 2.2e-308 a 1.8e308 | | `long double` | 16 bytes | Aún más grande | ```c float pi = 3.14f; double precise = 3.14159265359; long double ld = 3.14159265358979323846L; ``` ### Tipo Carácter ```c char grade = 'A'; char newline = '\n'; char ascii = 65; // Valor ASCII ``` ### Tipo Booleano (C99) ```c #include bool isActive = true; bool hasPermission = false; ``` ## Tamaños de Tipos ```c #include int main(void) { printf("char: %zu bytes\n", sizeof(char)); printf("int: %zu bytes\n", sizeof(int)); printf("float: %zu bytes\n", sizeof(float)); printf("double: %zu bytes\n", sizeof(double)); return 0; } ``` ## Inicialización ### Valores por Defecto **Advertencia:** ¡Las variables locales no se inicializan automáticamente! ```c int x; // Valor basura (indefinido) int y = 0; // Inicializado explícitamente ``` ### Estilos de Inicialización ```c int a = 10; // Inicialización directa int b = (int)10; // Inicialización con cast int c = {10}; // Inicialización con llaves (C99) int d = 0; // Inicialización a cero ``` ## Conversión de Tipos ### Implícita (Automática) ```c int i = 100; long l = i; // int a long (automático) double d = i; // int a double (automático) char c = 'A'; int x = c; // char a int (automático) ``` ### Explícita (Cast) ```c double d = 3.99; int i = (int)d; // Trunca a 3 float f = 3.14f; int x = (int)f; // 3 ``` ### Promoción de Enteros ```c char c1 = 10; char c2 = 20; int sum = c1 + c2; // Promovido a int ``` ## Constantes ### Calificador const ```c const double PI = 3.14159; const int MAX_SIZE = 100; // PI = 3.14; // ¡Error! No se puede modificar const ``` ### Macro #define ```c #define PI 3.14159 #define MAX_SIZE 100 #define TRUE 1 #define FALSE 0 ``` ### enum ```c enum Color { RED, GREEN, BLUE }; enum Color myColor = RED; // myColor = 0 enum Day { MON = 1, TUE, WED, THU, FRI, SAT, SUN }; ``` ## Límites ```c #include #include #include int main(void) { printf("INT_MAX: %d\n", INT_MAX); printf("INT_MIN: %d\n", INT_MIN); printf("UINT_MAX: %u\n", UINT_MAX); printf("FLT_MAX: %e\n", FLT_MAX); return 0; } ``` ## Alcance de las Variables ### Alcance de Bloque ```c int global = 10; // Alcance de archivo int main(void) { int local = 20; // Alcance de bloque for (int i = 0; i < 5; i++) { // Alcance de bucle // i solo existe aquí } return 0; } ``` ### Global vs Local ```c int counter = 0; // Global void increment(void) { counter++; // Accede a global } int main(void) { int counter = 10; // Local (sombrea global) printf("%d\n", counter); // 10 (local) printf("%d\n", ::counter); // Error en C (usar nombres diferentes) return 0; } ``` ## Variables Estáticas ```c void counter(void) { static int count = 0; // Retiene valor entre llamadas count++; printf("Count: %d\n", count); } int main(void) { counter(); // Count: 1 counter(); // Count: 2 counter(); // Count: 3 return 0; } ``` ## Resumen - Las variables almacenan valores de datos - Tipos enteros: char, short, int, long, long long - Tipos flotantes: float, double, long double - Usar `const` o `#define` para constantes - Cast para conversión explícita de tipos - Las variables locales no se inicializan automáticamente - Las variables `static` retienen valor entre llamadas - Usar `` y `` para límites de tipos

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →