C Language_(10)_Constructed Data Types_Union(2)

1 Содружество (Консорциум)

        союз

       {

                Тип данных 1, переменная-член 1;

                Переменная-член типа данных 2 2;

                тип данных 3, переменная-член 3;

        };

                Union Все переменные-члены занимают одно и то же пространство.

                И если вы измените какое-либо значение члена позже, предыдущее значение не будет учитываться.

Например, следующий пример

#include <stdio.h>

union data
{
	char a;
	short b;
	int c;
};

int main(int argc, const char *argv[])
{
	union data data1;
	data1.a = 'A';
	printf("data1.a = %c\n",data1.a);

	data1.b = 100;
	printf("data1.b = %d\n",data1.b);

	data1.c = 1100;
	printf("data1.c = %d\n",data1.c);

	
	return 0;
}

результат операции

 

2 размера памяти с порядком байтов

1 Память с прямым порядком байтов: младший адрес памяти хранит младшие биты данных, верхний адрес памяти хранит старшие биты данных (компьютеры обычно имеют прямой порядок байтов)

2 Большой конец памяти: младший адрес памяти хранит старший бит данных, верхний адрес памяти хранит младший бит данных (аппаратное обеспечение, такое как хранилище ARM, имеет обратный порядок байтов)

***Как определить, имеет ли ваше устройство порядок байтов? ***

#include <stdio.h>
union big_small_d
{
          int bsd1;
          char bsd2;
};

int main(int argc, char const *argv[])
{
     union big_small_d data;

     data.bsd1 = 1;
          if (data.bsd2)
          {
                    printf("为小端\n");
          }
          else 
          {
                    printf("为大端\n");
          }

          return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/m0_58193842/article/details/128154392
Recomendado
Clasificación