一个共用体的题
union u
{
int i;
char c;
};
u.i=266;
那么u.c是多少啊
[解决办法]
看看书好不好,你只定义了共用体u,那么共用体变量哪儿去了,你还没有定义呢,理论上说共用体变量共用一段内存,你如果想知道哦,只要执行printf()函数将其输出即可
[解决办法]
1楼的说的对
[解决办法]
char c是一个字节
int i是4个字节
266超过一个字节
所以u.c的数据溢出了
若u.i <256 则u.c的十进制数与u.i相同
[解决办法]
windows下好像没有这个字符啊
[解决办法]
#include<stdio.h>
#include<stdlib.h>
typedef union
{
int i;
char c;
} un;
int main(void)
{
un u;
u.i=266;
printf("u.i = %d\n", u.i);
printf("u.c = %c\n", u.c);
getch();
return 1;
}
[解决办法]
我觉得他们说的有道理!
[解决办法]
这个和你的机器有关
大小端不一样
printf一下 慢慢想呀
[解决办法]
顶5楼楼主
[解决办法]
楼主,这个程序的目的是用来测试CPU的存储方式是大端还是小端的。原理是这样的:
union的两个成员,一个是char,一个是int,这样这个union会分配最长的变量的空间,也就是分配int那么大的空间。然后存入266,
十六进制的是0x10A,而一个int是四个字节的,这样大端和小端时,那个char放的位置就不同了,然后通过char的输出就能判断出CPU
是大端还是小端了