标题:C 初学者 求助for循环4_强制类型转化
只看楼主
KK6428
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-11
结帖率:0
已结贴  问题点数:10 回复次数:5 
C 初学者 求助for循环4_强制类型转化
# include<stdio.h>

int main (void)
{
int     i;
float     sum=0;

for( i=1 ;i<=100 ;++i )

{
      sum = sum + 1/(float)(i);
  /*  sum=sum+( (float) ( 1/i );   这样写是不对的! )   */
  /*  sum=sun+1.0/i;               这是更简单的写法     */

}
 printf("sum=%f\n",sum);

return 0;

}


/*  sum=sum+( (float) ( 1/i );   这样写为什么是不对的! )   */


输出的结果也是不一样的,请帮忙详细解析一下。我是初学者。非常感谢你!
搜索更多相关主题的帖子: void 
2013-04-11 09:00
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:3 
/*  sum=sum+( (float) ( 1/i );   这样写为什么是不对的! )   */


这1 和i 都已经按照整型计算完毕了  你再加几个强制转换 也只能转换计算完毕后的数据

DO IT YOURSELF !
2013-04-11 09:12
pengyancai
Rank: 2
等 级:论坛游民
帖 子:57
专家分:46
注 册:2013-3-4
得分:3 
道理很简单,同意楼二。打个比方说,i==2,那么float(1/2)==0.0,先运算1/2,两个整型得到结果也是整形那么就是0,在强制类型装换成浮点数0.0.
而1/(float)2==0.5.先是把2转为浮点数2.0那么就是1/2.0,一个整数除浮点数,计算结果要把整数转为字节多的数据类型,所以就是0.5
收到的鲜花
  • KK64282013-04-11 09:51 送鲜花  2朵   附言:好文章
2013-04-11 09:26
KK6428
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-11
得分:0 
回复 2楼 wp231957
谢谢了!
2013-04-11 09:52
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2391
专家分:13384
注 册:2013-3-3
得分:3 
结果已经计算出来,强制转换最多就是加几个小数点,应该提前进行数据类型转换

Maybe
2013-04-11 11:57
yctchxf
Rank: 6Rank: 6
来 自:盐城
等 级:侠之大者
威 望:2
帖 子:176
专家分:454
注 册:2012-4-10
得分:3 
回复 5楼 邓士林
就是数据类型转换中的隐式转换吧。 显式的就是加上(float)
2013-04-11 12:41



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




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

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