首先我们来看一道题:
union number{
int value;char str[2];
};
number test;
test.value = 0;
test.str[0] = 10;
test.str[1] = 1;
printf("%d", test.value);
请问输出是多少?
一步步来求解,union是共享内存的,所以当前test占用4个字节。
1:test.value = 0;的时候,四个字节都是0,
2:test.str[0] = 10;这时内存编程如下图:
3:test.str[1] = 1;这时内存编程如下图:

本文通过一道union面试题,探讨了大端小端存储模式以及内存高低位的概念。当test.value = 0, test.str[0] = 10, test.str[1] = 1后,输出值会因系统的大端或小端模式不同而不同。在大端模式下,输出为2561;而在小端模式下,输出为266。通常,x86架构的CPU采用小端模式。"
113268020,10542837,Azure Database for MySQL vs. Azure MySQL: 比较与选型指南,"['Azure', '数据库', 'MySQL', '计算服务', '云数据库']

852

被折叠的 条评论
为什么被折叠?



