| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 761 人关注过本帖, 1 人收藏
标题:有关结构体的问题
取消只看楼主 加入收藏
星112
Rank: 5Rank: 5
来 自:山西朔州
等 级:职业侠客
威 望:2
帖 子:94
专家分:342
注 册:2012-6-22
结帖率:100%
收藏(1)
 问题点数:0 回复次数:2 
有关结构体的问题
struct stu{int a;int b;};
struct stu1{char a;char b;};
main(){
    struct stu1 a1;
    struct stu a;
    a.a=1;
    a.b=2;
    a1.a='a';
    a1.b='c';
    printf("a:%d  %d  \na1:%c   %c ",a,a1);
}
为什么a的内容可以正确输出,a1的却不可以?结构体类型的变量名到底代表了什么?结构体变量到底能不能进行进行整体操作?
搜索更多相关主题的帖子: 结构体 
2012-06-22 10:20
星112
Rank: 5Rank: 5
来 自:山西朔州
等 级:职业侠客
威 望:2
帖 子:94
专家分:342
注 册:2012-6-22
收藏
得分:0 
但是如果将Stu1中的类型也换成int型的话,输出当然也换成int,则可以正确输出,这到底是为什么呢?
2012-06-22 20:36
星112
Rank: 5Rank: 5
来 自:山西朔州
等 级:职业侠客
威 望:2
帖 子:94
专家分:342
注 册:2012-6-22
收藏
得分:0 
这个问题应该是这样的,大家看一下:
现在将问题转移到输出单个字节与输出两个字节出现了问题,研究一下它的处理机制。查看代码发现进行的是入栈操作,而进出栈是以两个字节为单位的,所以输出一个字节会报出错误。这其实是编译器进行了一次强制转化,将int型转化为char型,舍弃高位,只留低位。输出两个char型就进行了两次转换,所以两次输出来的一样,如果将代码变为a1.a=’c’;
A1.b=’a’;则会打印c.验证 。可以将结构体变量名看做一个数据类型,只不过它的类型的大小是不定了,是由我们自己定义的,所以输出的是它的内容,就相当于输出一个int型的变量,在输出的时候我们需要把握的是它的总字节数和输出是以字为单位的。
2012-06-23 00:30
快速回复:有关结构体的问题
数据加载中...
 
   



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

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