我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

天宇魔羯



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
发贴: 4600
威望: 0
浮云: 1189
在线等级:
注册时间: 2007-05-16
最后登陆: 2010-04-16

5come5帮你背单词 [ depreciation /dipri:i'eiən/ n. 贬值,损耗 ]


一个C程序

#include "stdio.h"
union un
{ int i;
char c[2];
};
void main()
{ union un x;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}
程序运行结果为什么是266


[ 此帖被天宇魔羯在2008-04-11 23:52重新编辑 ]
顶端 Posted: 2008-04-11 23:46 | [楼 主]
yunyue



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
发贴: 979
威望: 5
浮云: 407
在线等级:
注册时间: 2006-06-18
最后登陆: 2012-06-08

5come5帮你背单词 [ habitual /hə'bituəl/ a. 日常的,习惯的,惯常的 ]


编译器的问题,我得到不是这个结果
顶端 Posted: 2008-04-11 23:53 | [1 楼]
yunyue



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
发贴: 979
威望: 5
浮云: 407
在线等级:
注册时间: 2006-06-18
最后登陆: 2012-06-08

5come5帮你背单词 [ compare /kəm'p/ə/ vt. 比较,对照,比作,比喻 ]


Quote:
引用第8楼山高于2008-04-11 23:58发表的  :
根据UNION的特性
这个结果不确定的
因为执行了x.c[1]=1;后
x.i已经无效
而x.c[1]占一个字节,x.i占一个机器字
.......

正解
我得到不同的结果
顶端 Posted: 2008-04-12 00:00 | [2 楼]
yunyue



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
发贴: 979
威望: 5
浮云: 407
在线等级:
注册时间: 2006-06-18
最后登陆: 2012-06-08

5come5帮你背单词 [ feature /'fi:tə/ n. 特征,特色,脸上的一部分,五官之一(报纸的)特写 ]


程序运行五次得到的结果如下
-1208024822
-1208614646
-1209007862
-1208680182
-1208811254

如果先给 x.i 赋值,得到的结果才是266
求解释
顶端 Posted: 2008-04-12 11:21 | [3 楼]
yunyue



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
发贴: 979
威望: 5
浮云: 407
在线等级:
注册时间: 2006-06-18
最后登陆: 2012-06-08

5come5帮你背单词 [ signature /'signitə/ n. 签字,签名 ]


理论上是266,但实际上如果我不先给 x.i 赋一个值(随便一个值),就得不到266
顶端 Posted: 2008-04-13 11:43 | [4 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009426(s) query 6, Time now is:11-22 04:31, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号