| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1348 人关注过本帖
标题:求高手指导:关于WIN7下VC 6.0 短整型长度的问题
只看楼主 加入收藏
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:20 
求高手指导:关于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
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
%d、%x、%u是什么格式?

授人以渔,不授人以鱼。
2013-02-04 16:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
上面一段程序中b的长度明明是16个字节,为什么printf出来却是32个字节的
------
a. 是2个字节
b. 因为你是将之当成int看待的,所有格式字符都应该加 h 修饰
2013-02-04 16:23
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 2楼 TonyDeng
是整型,十六进制和无符号整型
2013-02-04 20:29
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:7 
祝楼主学习顺利
2013-02-04 20:33
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
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用killah在2013-2-4 20:33:12的发言:

还是不太明白,什么叫当做int型啊?%d输出我明白是要加h的,但是为什么数值a的%o,%x,%u输出不加h能正确显示成16字节,数值b就不行呢?

牵扯两个问题 一个是 数在电脑中如何储存与如何显示

如何储存 与你的定义 赋值 有关 如何显示 与输出语句怎么写有关

还有一个问题是 32位环境下数据压栈最小是32位的 64位最小多少不知道了 反正就算是16位 也会压一个32位的数 也就是根据情况扩展 所以 显示出来是32位的

注意你的表述 不是16字节 是16位二进制
2013-02-04 20:41
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 7楼 zklhp
多谢大神指点!是16位,不是16字节。。。PPS:如果数据压栈最小是32位,为什么数据a可以压出一个16位的啊?
2013-02-04 21:37
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用killah在2013-2-4 21:37:20的发言:

多谢大神指点!是16位,不是16字节。。。PPS:如果数据压栈最小是32位,为什么数据a可以压出一个16位的啊?

a压的应该也是32位的 只不过看起来是那样 我感觉是这样。。
2013-02-04 21:42
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 9楼 zklhp
嗯,可能计算机处理unsigned和signed不一样,就造成了一些差异,谢谢你的回答
2013-02-04 22:28
快速回复:求高手指导:关于WIN7下VC 6.0 短整型长度的问题
数据加载中...
 
   



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

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