| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1437 人关注过本帖
标题:[求助]请教一个++i的问题
只看楼主 加入收藏
hjwlh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-6
收藏
 问题点数:0 回复次数:27 
[求助]请教一个++i的问题

int i=2,m;
m=++i*++i;
printf("%d",m);
这个会打印出16

float i=2,m;
m=++i*++i;
printf("%f",m);
这个会打印出12.00000
–★–:
我试了一下,在VC下仍打印出16.00000

为什么换个数据类型输出的结果会不一样?

搜索更多相关主题的帖子: 打印 
2006-06-06 21:11
hjwlh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-6
收藏
得分:0 

我是在TC2.0上运行的。MYTC也试过。都是这样。

2006-06-06 21:21
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
果真如此。
我解释不了。
哪位高手帮帮忙?

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-06 21:30
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 

显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。

这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。
-----------------------------------------------------------------------------------------------------------
这是我在google上找到的!也许是这个原因吧!

我不能确定!
地址:http://ranbo.osxcn.com/misc/manual/PHP/zh/language.types.float.html

[此贴子已经被作者于2006-6-6 21:44:59编辑过]


2006-06-06 21:38
hjwlh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-6
收藏
得分:0 

可这里面的I不是分数啊。
如果发生了精度损失为什么打印出来的是12.00000 怎么算的呢?

这个问题今天无意中发现的。让我很困惑。

2006-06-06 21:52
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 

我也不知道为什么!
等着高手来回答吧!


2006-06-06 22:01
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 

楼主这例子应该是不同编译器对不同符号类型运算的处理问题。

m=++i*++i; //在VC可能是先执行一个++,这时候要先强制转换i的类型为int,再执行另一个++,这时候VC对i的处理可能
//是把i默认为刚才转换类型后的整型,所以把 i=3赋给第2个i,执行第2个++后i=4,
//所以这时候i统一为4,i*i=4*4=16;
//在其他编译器下可能会不一样:可能是先执行一个++,这时候要先强制转换i的类型为int,
//再执行另一个++,这时候并没有把刚的i赋予现在的i,因为刚转换类型后i是整型,而原来是浮点型,
//所以最后是i*i = $*3=12;


我的原则很简单:不做不喜欢的事!
2006-06-06 23:01
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
//所以最后是i*i = $*3=12;  ==> i*i = 4*3=12;  

我的原则很简单:不做不喜欢的事!
2006-06-06 23:02
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-07 15:48
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用穆扬在2006-6-7 15:48:00的发言:
查查汇编语言
INC指令
8086以及8087指令集

有理


对不礼貌的女生收钱......
2006-06-07 20:28
快速回复:[求助]请教一个++i的问题
数据加载中...
 
   



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

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