标题:[求助]实形与整形的运算问题。
只看楼主
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用zhangjuan在2006-12-24 10:51:36的发言:
这可能是类型不匹配
我改了一下
main()
{int i;
float j;
i=8;j=2.5;
printf("%d",i+(int)j);/*or printf("%f",(float)i+j);*/
getch();
}

你这样应该是强制转换吧?


&.天高海阔任我飞“
2006-12-24 15:14
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用nuciewth在2006-12-24 13:35:31的发言:
看一下double-->int的过程吧.

书上说所有实形数据参与的运算都是将所有参与运算的数据转换成double形再运算的,所以我才编了这个程序想试一试。


&.天高海阔任我飞“
2006-12-24 15:16
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用zhanghuan_10在2006-12-24 13:54:55的发言:
不明白!我在打印的那行的上面又定义了一个整形的变量c,令c = i + j;打印那行语句改一下,答案就是10,不这么的话就是0,这之间有什么区别吗?为什么结果会是不同的呢?

我于也是在等答案啊。


&.天高海阔任我飞“
2006-12-24 15:17
zzbgbclzy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-12-3
得分:0 
main()
{
int i;
float j;
i=8;
j=2.5;
printf("%f",i+j); /* 必须以实型显示*/
getch();
}

不能以整形格式显示实型数. 那不是手枪打飞机了吗?
2006-12-24 16:01
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用zzbgbclzy在2006-12-24 16:01:27的发言:
main()
{
int i;
float j;
i=8;
j=2.5;
printf("%f",i+j); /* 必须以实型显示*/
getch();
}

不能以整形格式显示实型数. 那不是手枪打飞机了吗?

请问,为什么不能用整形显示实形的数呢?我是新手,请教一下。


&.天高海阔任我飞“
2006-12-24 16:07
kelifei
Rank: 1
来 自:UESTC
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-11
得分:0 
个人理解:
i是int型的,占两个BYTE。j是float,i+j就是float,占四个BYTE,用int来打印就只能打印i+j的高两个BYTE,就是0。
多谢执教

-DFAE -DESS -DDVD -DMTK  -DDVR -DDECODE -DMSTAR -DPMP我决定在论坛潜水3年又3年!
2006-12-24 16:20
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用kelifei在2006-12-24 16:20:32的发言:
个人理解:
i是int型的,占两个BYTE。j是float,i+j就是float,占四个BYTE,用int来打印就只能打印i+j的高两个BYTE,就是0。
多谢执教

"用int来打印就只能打印i+j的高两个BYTE",这一句是社么意思?不太明白,请解释一下。


&.天高海阔任我飞“
2006-12-24 16:38
kelifei
Rank: 1
来 自:UESTC
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-5-11
得分:0 
就是一个float数的长度(4 byte)是一个int数据(2byte)的两倍,当你用int来printf时就只能printf一半。就是float的前两个byte,这两个byte就是float的高位。看看书就知道了

-DFAE -DESS -DDVD -DMTK  -DDVR -DDECODE -DMSTAR -DPMP我决定在论坛潜水3年又3年!
2006-12-24 16:52
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
得分:0 

难道float的高位一定是0,为什么我不管定义flaot型数是几输出结果都是0呢


2006-12-24 17:08
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
得分:0 
不会吧!我把值定义的不同!输出的基本上也就不同!我想18楼的解释的很有道理,这些数据原本是以实型数据的存储形式存储,而打印的时候要以整形的形式打印,所以就会出现那种情况了吧,我想就是存储形式不同,导致输出结果不同,我在上课的时候大概听老师提过这些。有的机器的int型也是占4个字节,这个时候我不知道按18楼的解释是怎样处理的呢?

该学习了。。。
2006-12-24 17:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-111656-1-1.html




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

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