Uniones

Una union es una posición de memoria que es compartida por dos o más variables diferentes, generalmente de distinto tipo.

Definición:

    union miUnion
    {
        int i;
        char ch;
    };

    miUnion miU;

La unión será lo suficientemente grande como albergar el tipo de dato mayor.
El acceso a los objetos contenidos en la unión se realizará mediante el operador punto (como en las estructuras)

        miU.i


Ejemplo.-

#include <stdio.h>

union miUnion{
    int i;
    char c;
};

int main(int argc, char *argv[])
{
    miUnion u;
    //u.c = 98;
    u.i = 21090;
    printf("El valor del entero es: %d\n",u.i);
    printf("El valor del caracter es: %c\n",u.c);

    return 0;
}






La salida por pantalla sería:

El valor del entero es: 21090
El valor del caracter es: b


Al imprimir u.c, se muestra el carácter b, que es representado internamente con el valor 98.

Ejemplo 2.-
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    const int tam = sizeof(long);
    union un{
          long l;
          char p[tam];
    };
    system("clear");
    un u;
    u.l = 32;
    printf("Valor de los diferentes bytes del long\n");
    for(int i = 7; i >= 0; i--)
    {
            printf("%d ", u.p[i]);
    }

    printf("\nAsignación de un valor a la posición 7 del array p\n");
    u.p[7] = 8;
    printf("Valor del long despues de la asignación: %ld\n",u.l);

    printf("Valor de los diferentes bytes del long\n");
    for(int i = 7; i >= 0; i--)
    {
            printf("%d ", u.p[i]);
    }

    return 0;

}

Los que trabajen en sistemas Windows, deben sustituir system("clear"); por sytem("cls");

Salida del programa Ejemplo2



 Entrada y Salida estándar
 Enumeraciones