求解c语言题目

2025-02-03 05:40:25
推荐回答(3个)
回答1:

联合a在栈区,栈区的生长方向向下(空间分配从高地址到低地址),但x86系统是小端模式(基本数据类型是高字节存在高地址,低字节存在低地址),所以a.i的存储从高地址到低地址:00001234,a的地址是34所在空间的地址(低地址),s占a的前两个字节,所以s[0]=0x34,

s[1]=0x12,s[2]0x00,s[3]=0x00;

下面是原理,随不太详细,大概也就这个意思:

栈的使用从高地址开始往低地址跑(堆则相反)。一般arm是使用小端模式,高地址放高位字节,低地址放低位字节,所

以例如0x12345678往栈区存储时,地址由高到低,依次存入12,34,56,78

回答2:

编译好执行就是34,12
但是这个题目不正确,
printf( "%x,%x\n",a.s[0],a.s[1]);
缺少双引号
要不就是void main()或者int main(){....return 0;}

回答3:

在“小端机”中输出是34,12,B正确。