C语言共用体union

union共用体说明:

当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度的整数倍。

比如union中有{int x; double x1; char name[10];}这个共用体的长度为10字节,因为name[10]是这个共用体中最大的一个变量

#include <stdio.h>

struct A
{
	int num;
	char name[20];
	char job;
	union			//共用体关键字union
	{
		int x;
		char zy[20];
	}t1;			//共用体对象
};


int main()
{
	struct A a[2];
	int i=0;
	while (i < 2)
	{
		printf("请输入编号:");
		scanf_s("%d", &a[i].num);
		printf("请输入姓名:");
		scanf_s("%s", a[i].name, 20);
		printf("请输入职位,学生为s,老师为t :");
		getchar();
		scanf_s("%c", &a[i].job, 1);
		if (a[i].job == ‘s‘)
		{
			printf("请输入该学生的班级:");
			scanf_s("%d", &a[i].t1.x);
		}
		else
		{
			printf("请输入该老师的职位:");
			scanf_s("%s", a[i].t1.zy, 20);
		}
		i++;
	}

	printf("************************************\n");
	i = 0;
	while (i < 2)
	{
		if (a[i].job == ‘s‘)
		{
			printf("%d\t%s\t%c\t%d\n", a[i].num, a[i].name, a[i].job, a[i].t1.x);
		}
		else
		{
			printf("%d\t%s\t%c\t%s\n", a[i].num, a[i].name, a[i].job, a[i].t1.zy);
		}
		i++;
	}
	
	system("pause");
	return 0;
}

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。