Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Entendiendo los tipos de datos en C: Guía completa

Los tipos de datos en C se refieren a un sistema extensivo para declarar variables o funciones de diferentes tipos. El tipo de una variable determina cuánto espacio ocupa en almacenamiento y cómo se interpreta el patrón de bits almacenado.

Los tipos en C se clasifican así:

NºTipos y Descripción
1

Tipos Básicos

Son tipos aritméticos, subdivididos en: (a) tipos enteros y (b) tipos de punto flotante.

2

Tipos Enumerados

Son tipos aritméticos usados para definir variables que solo pueden asignar ciertos valores enteros discretos.

3

El tipo void

El especificador void indica que no hay valor disponible.

4

Tipos Derivados

Incluyen (a) Tipos puntero, (b) Tipos array, (c) Tipos estructura, (d) Tipos unión y (e) Tipos función.

Los tipos array y estructura se denominan colectivamente tipos agregados. El tipo de una función especifica el tipo de valor de retorno. Veremos los tipos básicos a continuación; los demás se cubrirán en próximos capítulos.

Tipos Enteros

Tabla con detalles de tipos enteros estándar, tamaños de almacenamiento y rangos de valores:

TipoTamañoRango de valores
char1 byte-128 a 127 o 0 a 255
unsigned char1 byte0 a 255
signed char1 byte-128 a 127
int2 o 4 bytes-32,768 a 32,767 o -2,147,483,648 a 2,147,483,647
unsigned int2 o 4 bytes0 a 65,535 o 0 a 4,294,967,295
short2 bytes-32,768 a 32,767
unsigned short2 bytes0 a 65,535
long8 bytes (4 en SO de 32 bits)-9223372036854775808 a 9223372036854775807
unsigned long8 bytes0 a 18446744073709551615

Para obtener el tamaño exacto de un tipo o variable en una plataforma, usa el operador sizeof. sizeof(tipo) devuelve el tamaño en bytes. Ejemplo para obtener tamaños usando constantes de limits.h y float.h:

Demo en vivo
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
    printf("CHAR_BIT : %d\n", CHAR_BIT);
    printf("CHAR_MAX : %d\n", CHAR_MAX);
    printf("CHAR_MIN : %d\n", CHAR_MIN);
    printf("INT_MAX : %d\n", INT_MAX);
    printf("INT_MIN : %d\n", INT_MIN);
    printf("LONG_MAX : %ld\n", (long) LONG_MAX);
    printf("LONG_MIN : %ld\n", (long) LONG_MIN);
    printf("SCHAR_MAX : %d\n", SCHAR_MAX);
    printf("SCHAR_MIN : %d\n", SCHAR_MIN);
    printf("SHRT_MAX : %d\n", SHRT_MAX);
    printf("SHRT_MIN : %d\n", SHRT_MIN);
    printf("UCHAR_MAX : %d\n", UCHAR_MAX);
    printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
    printf("ULONG_MAX : %lu\n", (unsigned long) ULONG_MAX);
    printf("USHRT_MAX : %d\n", (unsigned short) USHRT_MAX);
    return 0;
}

Resultado típico en Linux:

CHAR_BIT : 8
CHAR_MAX : 127
CHAR_MIN : -128
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 9223372036854775807
LONG_MIN : -9223372036854775808
SCHAR_MAX : 127
SCHAR_MIN : -128
SHRT_MAX : 32767
SHRT_MIN : -32768
UCHAR_MAX : 255
UINT_MAX : 4294967295
ULONG_MAX : 18446744073709551615
USHRT_MAX : 65535

Tipos de Punto Flotante

Detalles de tipos de punto flotante estándar con tamaños, rangos y precisión:

TipoTamañoRango de valoresPrecisión
float4 byte1.2E-38 a 3.4E+386 decimales
double8 byte2.3E-308 a 1.7E+30815 decimales
long double10 byte3.4E-4932 a 1.1E+493219 decimales

El archivo float.h define macros para usar estos valores. Ejemplo que imprime espacio de almacenamiento de float y sus rangos:

Demo en vivo
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
    printf("Tamaño de float : %d \n", sizeof(float));
    printf("FLT_MAX : %g\n", (float) FLT_MAX);
    printf("FLT_MIN : %g\n", (float) FLT_MIN);
    printf("-FLT_MAX : %g\n", (float) -FLT_MAX);
    printf("-FLT_MIN : %g\n", (float) -FLT_MIN);
    printf("DBL_MAX : %g\n", (double) DBL_MAX);
    printf("DBL_MIN : %g\n", (double) DBL_MIN);
    printf("-DBL_MAX : %g\n", (double) -DBL_MAX);
    printf("Valor de precisión: %d\n", FLT_DIG);
    return 0;
}

Resultado en Linux:

Tamaño de float : 4
FLT_MAX : 3.40282e+38
FLT_MIN : 1.17549e-38
-FLT_MAX : -3.40282e+38
-FLT_MIN : -1.17549e-38
DBL_MAX : 1.79769e+308
DBL_MIN : 2.22507e-308
-DBL_MAX : -1.79769e+308
Valor de precisión: 6

El tipo void

El tipo void especifica que no hay valor disponible. Se usa en tres situaciones:

NºTipos y Descripción
1

Funciones que devuelven void

Hay funciones que no devuelven valor (devuelven void). Ejemplo: void exit(int status);

2

Argumentos de función como void

Funciones que no aceptan parámetros. Ejemplo: int rand(void);

3

Punteros a void

Un puntero void * representa la dirección de un objeto, pero no su tipo. Ejemplo: void *malloc(size_t size); devuelve puntero a void que puede castearse a cualquier tipo.

Lenguaje C

  1. Interruptores eléctricos: tipos, funciones y aplicaciones
  2. 5 Modelos de Centros de Datos Explicados: Diseño, Casos de Uso y Ejemplos
  3. Ocho Modelos Clave de Computación en la Nube en 2021
  4. 8 Tipos Comunes de Violación de Datos: Ejemplos Reales e Impacto
  5. Domine variables y tipos de datos primitivos en C#: Guía completa
  6. Entendiendo los Tipos de Datos en C++: Fundamentos, Modificadores y Mejores Prácticas
  7. Tipos de datos en C explicados: int, float, char y más – guía completa
  8. Variables, tipos de datos y constantes en C – Guía práctica
  9. Dominando la Abstracción de Datos en C++: Simplifica el Diseño con Separación Interfaz-Implementación
  10. Dominando tipos de datos en Python: Guía práctica
  11. Tipos de Datos Primitivos en Java: Guía Completa con Ejemplos