共用体的定义和初始化

结果是4!
为什么会是4呢?整型是4个字节,字符是1个字节,加起来不是5吗?
又或者内存对齐不应该也是5吗?

例题:

计算该机器字节序的大小端

第一种方法:

int main() {
	int a = 1;
	int ret = *(char *)&a;
	if (ret == 1) {
		printf("小端");
	}
	else {
		printf("大端");
	}
	return 0;
}

第二种方法: 利用函数

int fun() {
	int a = 1;
    return *(char *)&a;
}
int main() {
		int ret = fun();
		if (ret == 1) {
			printf("小端");
		}
		else {
			printf("大端");
		}

	}

第三种方法: 利用共用体

int fun() {
	union n {
		char c;
		int a;
	}u;
	u.a = 1;
	return u.c;
}

int main() {
	int ret = fun();
	if (ret == 1) {
		printf("小端");

	}
	else {
		printf("大端");
	}
	return 0;
}