| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖, 1 人收藏
标题:这现象 问老师都无解!求解释!
只看楼主 加入收藏
xiaopao1
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-10-18
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:12 
这现象 问老师都无解!求解释!
这个问题是 判别 电脑是大端格式,还是小端格式的而写的测试小程序

#include <stdio.h>
int main()
{
    unsigned int a=0xff332211;
    int i;
    char *p;
    p=(char*)&a;
    for(i=0;i<4;i++)
    {
        printf("0x%x\t",*p);
        p++;
    }
}

结果把a=0xff332211;理论上是输出 11 22 33 ff (大端),ff 33 22 11 (小端)
但我的运行后变成下图:
搜索更多相关主题的帖子: include 
2012-11-10 20:50
xiaopao1
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-10-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-11-10 20:50
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:2 
这问题简单,看下面!
#include <stdio.h>
int main()
{
    unsigned int a=0xff332211;
    int i;
    unsigned char *p;
    p=(unsigned char * )&a;
    for(i=0;i<4;i++)
    {
        printf("0x%x\t",*p);
        p++;
    }
}
将0xff强制类型转换成char*类型,当然超出-128~127范围了
0xff也就是0b11111111,最大取值为255,将0xff强制类型转换成unsigned char *就行了

[ 本帖最后由 小小战士 于 2012-11-10 21:38 编辑 ]

小小战士,战士中的战斗机!
2012-11-10 21:32
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:2 
我想去楼主的学校当老师,工作真轻闲,还有寒暑假

总有那身价贱的人给作业贴回复完整的代码
2012-11-10 22:07
xiaopao1
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-10-18
收藏
得分:0 
char型255溢出怎么会变成4个字节的类型呢?
2012-11-11 08:11
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:2 
没有变成4个字节啊,unsigned char *p ,指向unsigned char 型(它的范围是0-255),这点要注意。你在看a=0xff332211,它是32位的,这点你应该知道吧,可以看出它是大字段字序的。它是用unsigned char *p来指向a的首地址,它是这样表示的0x11,在unsigned char 的表示范围内,同样的0x22,0x33,0xff(1111 1111正好是255),你之前用的char *p ,它的范围是(0-127),它0x11,0x22,0x33都在它表示范围内,而到0xff却溢出了,这就是你为什么只有0xff无法正确表示的原因。还有不明白的再说吧

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-11 09:43
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
好吧,我犯了个错,应该是小端字序,不要见怪~~

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-11 09:53
xiaopao1
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-10-18
收藏
得分:0 
回复 4楼 embed_xuel
来嘛,我们这需要你这样的人才!我们那女老师看此程序很久,也没发现是什么情况,还在windows下单步什么的....后来才知道要改unsigned char
2012-11-12 12:45
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
现在的教育,经常是没怎么做过开发讲c语言,没做过大项目的讲软件工程。

总有那身价贱的人给作业贴回复完整的代码
2012-11-12 13:57
senpujituan
Rank: 4
等 级:业余侠客
帖 子:91
专家分:203
注 册:2012-6-29
收藏
得分:2 
以下是引用embed_xuel在2012-11-12 13:57:59的发言:

现在的教育,经常是没怎么做过开发讲c语言,没做过大项目的讲软件工程。
做的的不会去学校当老师,培训机构更爽!!!
2012-11-12 14:16
快速回复:这现象 问老师都无解!求解释!
数据加载中...
 
   



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

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