| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1075 人关注过本帖
标题:请大虾帮忙看下这段代码,我怎么觉得这个结果不对啊,整型存储单元不是4吗? ...
只看楼主 加入收藏
qjunshen
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-5-11
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:11 
请大虾帮忙看下这段代码,我怎么觉得这个结果不对啊,整型存储单元不是4吗?
#include<stdio.h>
main()
{
    int a,b,c;
    double d=38.4;
    a=sizeof(a);
    b=sizeof(d);
    c=(int)&d;
    printf("a=%d\nb=%d\nc=%d\nd=%g",a,b,c,d);
    getch();
}
搜索更多相关主题的帖子: 整型 单元 代码 结果 
2010-08-13 11:41
liuzhengshen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:83
专家分:141
注 册:2010-4-23
收藏
得分:0 
#include<stdio.h>

int main(void)
{
    int a,b,c;
    double d=38.4;
    a=sizeof(a);
    b=sizeof(d);
    c=(int)d;
   
    printf("a=%d\nb=%d\nc=%d\nd=%g\n",a,b,c,d);
   
    return 0;
}
2010-08-13 11:50
liuzhengshen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:83
专家分:141
注 册:2010-4-23
收藏
得分:0 
你那&取地址加上是什么意思,怎么能把d的地址给c变量呢,不要加&去地址符号
2010-08-13 11:52
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:0 
#include<stdio.h>
main()
{
    int a,b,c;
    double d=38.4;
    a=sizeof(a);            //计算int型整数的长度,并赋值给a,根据编译器的不同可能是2或者4,现在大部分是4
    b=sizeof(d);          //计算double型数据d的长度并赋值给b,一般为8
    c=(int)&d;               //&d表示数据d其实地址,强制转换成int类型的数据,然后复制给c。
    printf("a=%d\nb=%d\nc=%d\nd=%g",a,b,c,d);//输出abcd的值
    getch();
}
如果你不确定,可以加一条打印&d值的表达式
printf("&d=%d\n",&d);
你会发现他和c是一样的。
2010-08-13 12:06
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
这个程序哪和楼主想的不一样呀?楼主也没说清楚……
你应该把你想的什么样,和执行結果什么样都说一下。我也好知道你哪不懂。
2010-08-13 13:53
qjunshen
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2010-5-11
收藏
得分:0 
以下是引用pangding在2010-8-13 13:53:37的发言:

这个程序哪和楼主想的不一样呀?楼主也没说清楚……
你应该把你想的什么样,和执行結果什么样都说一下。我也好知道你哪不懂。
其实我想知道,整型在我看到的书上说是需要4字节,但我运行这个程序显示的却是2个字节,这是怎么回事?或者说区别是什么?为什么有的整型存储需要2字节有的需要4字节?
2010-08-14 18:18
sdmscu
Rank: 2
等 级:论坛游民
帖 子:32
专家分:15
注 册:2010-7-7
收藏
得分:0 
回复 4楼 erikyo
按照你说的  输出&d   

和c  不一样啊


输出结果如下:
 
a=4
b=8
c=3078424
d=1.50294e-317

2010-08-14 20:53
crazysand
Rank: 2
等 级:论坛游民
帖 子:3
专家分:24
注 册:2010-8-14
收藏
得分:20 
回复 6楼 qjunshen
这个和操作系统有关系,因为你的机器是16位操作系统,整数类型占2个字节,所以int a;后sizeof(a)是2。如果你的机器是32位操作系统,那么整形是4个字节。
2010-08-14 22:31
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
看来楼主用的 TC……
2010-08-14 22:40
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
收藏
得分:0 
学习了
2010-08-15 17:32
快速回复:请大虾帮忙看下这段代码,我怎么觉得这个结果不对啊,整型存储单元不是 ...
数据加载中...
 
   



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

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