首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个共用体的题解决方案

2012-02-24 
一个共用体的题union u{int ichar c}u.i266那么u.c是多少啊[解决办法]看看书好不好,你只定义了共用体

一个共用体的题
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

是大端还是小端了

热点排行