#include<stdio.h>
void main()
{union
{int i[2];long k;char c[4];}r,*s=&r;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%c\n",s->c[0]);
}
求输出结果()。麻烦给出解答过程。谢谢啦!!!
--
很感谢您的回答!还有个问题希望您能够帮我解答一下。
int型有时占2个字节有时占4个字节,这题怎么去判断是占几个字节呢?还有long int不是占8个字节吗,为什么你说k占4个字节?
谢谢啦!
在你的机器上可以写测试程序判断你机器上的int占几个字节,这跟你机器的操作系统是有关系的。
cout << sizeof(int);
sizeof(int)返回int类型的大小。
16位机器上int型占2个字节。
32位机器上int和long int 都是占4个字节。
64位机器上int型占4个字节,long型占8个字节。
现在一般的机器都是32位机器,所以int占四个字节。
首先很感谢您的回答。不过还有点问题希望您够帮我说说。
int型变量不是只占两个字节吗?为什么将0-3四个字节分给i[0]?而且long int是占8个字节的啊,为什么k位于0-3,而不是0-7?
i[0]为0x00 0x39是怎样储存的?0x00在前还是0x39在前,也就是c[0]为什么对应0x39而不是0x00?
希望您能帮忙解释一下,谢谢啦!
int和long在不同平台上面的大小不一样的
你可以写一段
printf("%d %d",sizeof(int),sizeof(long));
测试一下,int和long占几个字节的,
一般的电脑,就是你装着windows的电脑,都是int4,long4的,你可以测试一下
还有就是你不知道【i[0]为0x00 0x39是怎样储存的?】,是因为你没有大小端的概念,
大端的储存模式把高位存在低地址,小端相反,我们一般碰到的电脑都是小端的,
再有不懂的385749807,我给你讲个明白