标题:大家帮我看个题目!!!我有点搞不懂???
只看楼主
kv2006
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-11-20
 问题点数:0 回复次数:7 
大家帮我看个题目!!!我有点搞不懂???
#include <stdio.h>
void main(void)
{union{char c;int i;}u;
u.c='A';u.i=0x0143;
printf("%d,%d",u.c,u.i);
}
远行结果为:67,323 为什么? 'A'的ascii码不是65吗?
搜索更多相关主题的帖子: include 
2005-11-20 14:59
燃冥
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-11-19
得分:0 
void main(void) -》 int main (void)


printf("%c,%d",u.c,u.i);
看输出什么了?
2005-11-20 15:26
大水牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:233
专家分:0
注 册:2005-11-21
得分:0 
以下是引用燃冥在2005-11-20 15:26:00的发言:
void main(void) -》 int main (void)


printf("%c,%d",u.c,u.i);
看输出什么了?

能告诉我你把MAIN 的VOID改成INT 干什么吗,这个是函数返回参数和内部没什么关系的


虽然现在的我什么都不明白,但总有一天,我将包容一切,让优秀变成一种习惯。。。。。。。。。。。。
2005-11-21 11:53
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
得分:0 
这个是联合.只能有一个值是有效的.

=×&D o I p R e E n C g T l X&×=
2005-11-22 12:59
w7259521
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-11-22
得分:0 
2005-11-23 11:20
w7259521
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-11-22
得分:0 
你同时给了两个值
最后引用u.c时,它用的是int的最后一个字节的十六进制数
为43(01000011)
十进制67
2005-11-23 11:38
sydwgs
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2005-10-26
得分:0 
天书~~~~~~~~~~~~~~

今天我是新手~~~~~明天我乃高手~~~~~~
2005-11-23 14:04
w7259521
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-11-22
得分:0 
当执行u.c='A'时存储的是0000,0000,0100,0001注意后面的字节是65
当执行u.c=0x0143时存储的是0000,0001,0100,0011注意后面的字节是67
联合体是共用一块存储空间的即0000,0001,0100,0011将0000,0000,0100,0001覆盖,再引用u.c时读到的是0100,0011也就是67

2005-11-23 14:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-34314-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053630 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved