| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1348 人关注过本帖
标题:求高手指导:关于WIN7下VC 6.0 短整型长度的问题
取消只看楼主 加入收藏
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:10 
求高手指导:关于WIN7下VC 6.0 短整型长度的问题
#include<stdio.h>
void main()
{   
    int s1,s2;
    unsigned short int a=65535;
    short int b=-2;
    printf("a=%hd,%o,%x,%u\n",a,a,a,a);
    printf("b=%d,%o,%x,%u\n",b,b,b,b);
    s1=sizeof(a);s2=sizeof(b);
    printf("%d,%d",s1,s2);
}

输出是:a=-1,177777,ffff,65535
        b=-2,37777777776,fffffffe,4294967294
        2,2

问题:上面一段程序中b的长度明明是16个字节,为什么printf出来却是32个字节的?
2013-02-04 15:34
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 2楼 TonyDeng
是整型,十六进制和无符号整型
2013-02-04 20:29
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 3楼 rjsp
还是不太明白,什么叫当做int型啊?%d输出我明白是要加h的,但是为什么数值a的%o,%x,%u输出不加h能正确显示成16字节,数值b就不行呢?
2013-02-04 20:33
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 7楼 zklhp
多谢大神指点!是16位,不是16字节。。。PPS:如果数据压栈最小是32位,为什么数据a可以压出一个16位的啊?
2013-02-04 21:37
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 9楼 zklhp
嗯,可能计算机处理unsigned和signed不一样,就造成了一些差异,谢谢你的回答
2013-02-04 22:28
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 9楼 zklhp
我用sizeof求a和b的长度,都是2字节=16位,压出来32位的话是不是应该显示4字节啊?
2013-02-04 22:29
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 12楼 zklhp
能看的懂个大概,汇编里面数据位数什么的都是对的,处理a和b的时候除了符号扩展方法不一样其他都是一样的,可能是printf函数的问题吧。。。
2013-02-05 09:42
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 13楼 TonyDeng
%d我明白的,printf出来都是32位的,但是a和b的长度都是2字节,用%o,%x,%u处理出来的结果长度却不一样,a对应的%o,%x,%u输出是2字节,而b对应的输出都是4字节。
输入的都是2字节的数,为什么%o,%x,%u会区别对待呢?
2013-02-05 09:48
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 16楼 TonyDeng
我试了下把a的值也改成-2,同样a的输出仍是16位,b的输出是32位,所以可能这个和a的数值没有太大关系,不知道哪里出了问题。。。
2013-02-05 15:29
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 18楼 TonyDeng
我把-2赋给a时得出的结果是-2,177776,fffe,65534
PS.我试过把b改成65535,同样a的输出仍是16位,b的输出是32位
2013-02-15 11:58
快速回复:求高手指导:关于WIN7下VC 6.0 短整型长度的问题
数据加载中...
 
   



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

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