| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 458 人关注过本帖
标题:第一个是把a和b给赋值成整形,第二个是赋值成单精度, 结果却是不同的,第一 ...
只看楼主 加入收藏
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
结帖率:100%
收藏
已结贴  问题点数:4 回复次数:3 
第一个是把a和b给赋值成整形,第二个是赋值成单精度, 结果却是不同的,第一个48.84,第二个31.00,为什么会有这样的的差别呢?
——————————————————————————————————————————————(正确程序)
 #include<stdio.h>
 main()
 {
     int i,d;
    float c,a=2,b=1,sum=0;
     for(i=1;i<=30;i++)
     {
         c=a/b;
         d=b;
        b=a;
        a=a+d;
        sum=sum+c;
     }
     printf("sum=%.2f\n",sum);
 }
——————————————————————————————————————————————(错误程序)
 #include<stdio.h>
 main()
 {
     int i,a=2,b=1,d;
        float c,sum=0;
     for(i=1;i<=30;i++)
     {
         c=a/b;
         d=b;
        b=a;
        a=a+d;
        sum=sum+c;
     }
     printf("sum=%.2f\n",sum);
 }
分析:
   在两个程序中,第一个是把a和b给赋值成整形,第二个是赋值成单精度,
结果却是不同的,第一个48.84,第二个31.00,但是本题中对于ab来说运算都是在整数基础上,只有c=a/b中c可能是分数,我已经把c给定义
为float了,为什么会有这样的的差别呢?
搜索更多相关主题的帖子: include 
2015-01-27 22:08
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:4 
程序代码:
#include<stdio.h>
main()
{
     int i,a=2,b=1,d;
        float c,sum=0;
     for(i=1;i<=30;i++)
     {
         c=(float)a/b;
         d=b;
        b=a;
        a=a+d;
        sum=sum+c;
     }
     printf("sum=%.2f\n",sum);
} 

一片落叶掉进了回忆的流年。
2015-01-28 02:51
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
         c=a/b;在这里进行强制类型转换

一片落叶掉进了回忆的流年。
2015-01-28 02:52
civilherui
Rank: 2
来 自:陕西榆林
等 级:论坛游民
威 望:2
帖 子:67
专家分:97
注 册:2015-1-18
收藏
得分:0 
回复 2楼 诸葛欧阳
懂了,但是两个整形数相除,即使相除结果从数学角度来讲是分数,它也会把结果给默认强制为整形,与原来的值相比,只有第一个为2,其他的29个都为1,所以总和达31,懂了。万分感谢

我走向的将是机械、电子、编程的集成之路。
2015-01-28 13:36
快速回复:第一个是把a和b给赋值成整形,第二个是赋值成单精度, 结果却是不同的 ...
数据加载中...
 
   



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

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