| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 497 人关注过本帖
标题: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
帖 子:2392
专家分: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
快速回复:C 初学者 求助for循环4_强制类型转化
数据加载中...
 
   



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

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