标题:[求助]实形与整形的运算问题。
取消只看楼主
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
 问题点数:0 回复次数:9 
[求助]实形与整形的运算问题。
我是新手,请大家帮帮忙。

main()
{
int i;
float j;
i=8;
j=2.5;
printf("%d",i+j);
}

我不明白为什么输出结果是0,我用TC2.0的。

还有一个问题,书上说所有实形数据参与的运算都是将所有参与运算的数据转换成double形再运算的,是不是这样?
搜索更多相关主题的帖子: 整形 运算 float 
2006-12-24 09:53
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
真的。你试试。

&.天高海阔任我飞“
2006-12-24 10:07
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
我也在等啊,明年还要考二级。

&.天高海阔任我飞“
2006-12-24 10:20
笨小晴
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
笨小晴
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
笨小晴
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
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用zhanghuan_10在2006-12-24 17:53:18的发言:
不会吧!我把值定义的不同!输出的基本上也就不同!我想18楼的解释的很有道理,这些数据原本是以实型数据的存储形式存储,而打印的时候要以整形的形式打印,所以就会出现那种情况了吧,我想就是存储形式不同,导致输出结果不同,我在上课的时候大概听老师提过这些。有的机器的int型也是占4个字节,这个时候我不知道按18楼的解释是怎样处理的呢?

好像多少位机跟这有影响。


&.天高海阔任我飞“
2006-12-24 20:10
笨小晴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
得分:0 
以下是引用kelifei在2006-12-24 17:54:15的发言:
误导大家了

我看了下,float数据类型在内存里面和int型不同,

不过就是因为内存存储的问题

看看有解
http://roadbeg.bokee.com/1922936.html

说实话,就一个初学者来说,我真的看不懂里面的东西。


&.天高海阔任我飞“
2006-12-24 20:14



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




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

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