c语言联合

时间:2018.05.10 发布人:

c语言联合

已解决问题

谷歌用户在2018.05.10提交了关于“任嘉伦c语言联合”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-14T03:18:09。

#include<stdio.h>

typedefunionstudent{

inti;

intj;

chars[10];

}ID;

intmain()

{

IDa;

a.i=10;

printf("%d%d%d\n",a.i,a.i,a.s[0]);

a.i=256;

printf("%d%d%d%d\n",a.i,a.j,a.s[0],a.s[1]);

getchar();

return0;

}


为什么输出的a.s[0]=0a.s[1]=1?

希望大家能够帮助她。

详细问题描述及疑问:

#include<stdio.h>

typedefunionstudent{

inti;

intj;

chars[10];

}ID;

intmain()

{

IDa;

a.i=10;

printf("%d%d%d\n",a.i,a.i,a.s[0]);

a.i=256;

printf("%d%d%d%d\n",a.i,a.j,a.s[0],a.s[1]);

getchar();

return0;

}


为什么输出的a.s[0]=0a.s[1]=1?

期待您的答案,你无异于雪中送炭,让我感激涕零 !
希望以下的回答,能够帮助你。

第1个回答

用户名:ygl990951  

原因是你是用%d来打印字符a.s[0]与a.s[1],而在C语言中,int型变量占2个字节,而字符型变量只占1个字节。当把256赋给a.i(a.i=256)时,占用了二个字节,低字节(a.s[0]**用)为00000000,而问答高字节(a.s[1]**用)为00000001(2带边导56=2^8),所以输出的a.s[0]=0,a.s[1]=1。如果改为a.i=257,则按此分析,打印出的a.s[0]=1,a.s[1]=1了,你可试试。