搜索
查看: 3167|回复: 5
打印 上一主题 下一主题

这个问题 很奇葩

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-10 01:33:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1啊哈币
[mw_shl_code=c,true]#include <stdio.h>
main()
{
float a;
    int b,c;
    a=10.2;
    b=10;
    c=a*(b*b);
    printf("%d=%f*(%d*%d)",c,a,b,b);
sleep(15000);
return 0;
}[/mw_shl_code]
请问 为什么输出的不是1020

最佳答案

查看完整内容

#include int main() { float a; int b; float c; a=10.2; b=10; c=a*(b*b); printf("%f=%f*(%d*%d)",c,a,b,b); sleep(15000); return 0; } ,c=a*(b*b);这个语句返回的值是float型 ,你在定义c的类型时不对,
沙发
发表于 2012-7-10 01:33:01 | 只看该作者
#include <stdio.h>
int main()
{ float a;   
  int b;
  float c;     
  a=10.2;     
  b=10;   
   c=a*(b*b);   
    printf("%f=%f*(%d*%d)",c,a,b,b);
     sleep(15000);
      return 0;
      }
,c=a*(b*b);这个语句返回的值是float型 ,你在定义c的类型时不对,

评分

参与人数 1啊哈币 +10 收起 理由
admin + 10 赞一个!

查看全部评分

板凳
发表于 2012-7-10 18:17:54 | 只看该作者
都改成 float 吧,float 和 int之间的隐式转换 会有这样的问题
比如 1020这个数 表现的形式可能是1019.999999 当把1019.999999赋值给一个整数的时候 就只会保留整数部分所以就只剩下1019了
地板
 楼主| 发表于 2012-7-10 18:27:14 | 只看该作者
admin 发表于 2012-7-10 18:17
都改成 float 吧,float 和 int之间的隐式转换 会有这样的问题
比如 1020这个数 表现的形式可能是1019.999 ...

确实都改成float 是对的  可是 是不是说 以后都不能同时出现 float 和 int?
5#
发表于 2012-9-5 19:22:25 | 只看该作者
381621800 发表于 2012-7-10 18:27
确实都改成float 是对的  可是 是不是说 以后都不能同时出现 float 和 int?

double a,sum;
int b;
a=(double)10.2;
b=(int)10;
sum=a*(b*b);
printf("%f=%f*(%d*%d)",sum,a,b,b);
6#
发表于 2016-10-21 23:25:50 | 只看该作者
本帖最后由 ODIE 于 2016-10-21 23:27 编辑


#include <stdio.h>
#include <stdlib.h>
int main()
{
        float a;
    a=10.2;
    a=a*(10*10);
    printf("%f",a);
        system("pause");
        return 0;

}



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表