编程使用union实现判断系统大小端
时间: 2023-08-06 19:02:22 浏览: 84
可以使用union实现判断系统大小端。具体实现如下:
```c
#include <stdio.h>
int check_endian() {
union {
short s;
char c[sizeof(short)];
} test_endian;
test_endian.s = 0x0102;
if (test_endian.c[0] == 1 && test_endian.c[1] == 2) {
return 0; // 大端模式
} else if (test_endian.c[0] == 2 && test_endian.c[1] == 1) {
return 1; // 小端模式
} else {
return -1; // 未知模式
}
}
int main() {
int endian = check_endian();
switch (endian) {
case 0:
printf("This system is big-endian.\n");
break;
case 1:
printf("This system is little-endian.\n");
break;
default:
printf("Unknown endianness.\n");
break;
}
return 0;
}
```
该程序定义了一个union类型,包含一个short类型成员和一个char数组成员。在使用short类型成员赋值后,通过检查char数组成员的值来判断系统的大小端模式。如果c[0]是1,则表示该系统是大端模式;如果c[0]是2,则表示该系统是小端模式。
阅读全文