#include <stdio.h>
int main() {
union {
short value; // 2字节
char bytes[sizeof(short)]; // char[2]
} test;
test.value = 0x0102;
if((test.bytes[0] == 1) && (test.bytes[1] == 2)) {
printf("大端字节序\n");
} else if((test.bytes[0] == 2) && (test.bytes[1] == 1)) {
printf("小端字节序\n");
} else {
printf("未知\n");
}
printf("%s",test.bytes);
return 0;
}
这是一个识别自己的主机是小端字节序还是大端字节序的程序,我在linux系统下编译运行,为什么最后 printf("%s",test.bytes);这行没有输出任何内容,输出结果如下:
另外可以麻烦大伙们解释下为什么令test的值为0x0102,bytes就自动填值了呢?