下列程序的输出结果为?#includevoid main(){union{int k;char i[2];}*s,a;s=&a;s->i[0]=0x39;s->i[1]=0x38;printf("%x\n",s->k);}A.3839 B.3938 C.380039,D.390038
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/01 12:14:08
下列程序的输出结果为?
#include
void main()
{union
{int k;
char i[2];
}*s,a;
s=&a;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%x\n",s->k);
}
A.3839 B.3938 C.380039,D.390038
VC下运行的结果是
0xCCCC3839
原因,
共同体中,变量有相同的起始地址.
也就是说
i[0]的地址就是k的起始地址.
也就是说k的起始地址就是数组第一个元素的地址.
然后
k占4个字节.
函数中的局部变量如果没有初始化.
k是0XCCCCCCCC.
由于起始地址指向的变量的最低位字节,随着地址增大指向高位字节.
有
s->i[0]=0x39;
s->i[1]=0x38;
所以后2个字节变成了
0XCCCC3839.
0X表示是16进制表示.
这道题靠的就是共同体中变量的内存分布.
答案是A.
但是其实在VC下结果应该是
CCCC3839
因为,共同体中的变量k没有初始化.
主要理解,共同体下,变量共享起始地址.
写出执行下列程序的输出结果.
写出执行下列程序的输出结果.
写出执行下列程序的输出结果.
写出执行下列程序的输出结果.
下列程序的输出结果为:int i;void prt(){for(i=5;i
写出下列每个程序运行后的输出结果
写出下列每个程序运行后的输出结果,
c程题:写出下列程序段的输出结果
如图,程序执行后输出的结果为多少?
写出下列程序段的输出结果.#define A 10 #define B (A
写出下列每个程序运行后的输出结果,急求谢谢
c程初学者,比较渣:写出下列程序段的输出结果
按下列图示的程序计算,若开始输入的值为x=2则最后输出的结果是多少?
执行下图所示的程序框图表示的算法,其输出的结果s为
下列程序的输出结果为( ) void main() { int x, y, z; x = y = 1; z = x++, y++, ++y; printf(“%d, %d,下列程序的输出结果为( )void main(){ int x, y, z; x = y = 1; z = x++, y++, ++y; printf(“%d, %d, %d
”, x, y, z);}选
这个程序~下列程序段的输出结果是( ).ACCEPT TO A IF A=〔123456〕 S=0 ENDIF S=1 S RETURN下列程序段的输出结果是( ).ACCEPT TO AIF A=〔123456〕S=0ENDIFS=1RETURN为什么显示的结果为1!不懂
编一程序,实现下列分段函数的求值注意:请用c/c++中的cout来表示输出结果
写出下列每个程序运行后的输出结果,后面还有一小段回复我上后面图,