搜索
查看: 1868|回复: 3
打印 上一主题 下一主题

关于强制类型转换的问题。。

[复制链接]
跳转到指定楼层
楼主
发表于 2013-1-29 10:45:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
int main()
{
    int a,b;
    float c;
    a=3;
    b=2;
    c=2.5;
    printf("the total is %f\n",(float)(a+b)/3+(int)c);
        sleep(5000);
        return 0;
}
为什么输出来的结果是3.666667而不是1.000000

最佳答案

查看完整内容

你的程序并没有错,错在不是你想要的结果。 ‘/’的优先级高于‘+’ 如果把表达式(float)(a+b)/3+(int)c改为(float)(a+b)/(3+(int)c)如你所愿了,如下程序: #include int main() { int a,b; float c; a=3; b=2; c=2.5; printf("the total is %f\n",(float)(a+b)/(3+(int)c)); sleep(5000); return 0; } 这样输出的结果就是你想要的结果1.00000:
沙发
发表于 2013-1-29 10:45:35 | 只看该作者
你的程序并没有错,错在不是你想要的结果。 ‘/’的优先级高于‘+’
如果把表达式(float)(a+b)/3+(int)c改为(float)(a+b)/(3+(int)c)如你所愿了,如下程序:
#include <stdio.h>
int main()
{
    int a,b;
    float c;
    a=3;
    b=2;
    c=2.5;
    printf("the total is %f\n",(float)(a+b)/(3+(int)c));
        sleep(5000);
        return 0;
}
这样输出的结果就是你想要的结果1.00000:
板凳
发表于 2013-1-31 11:27:35 | 只看该作者
有错么?
a+b=5
(float)5=5.000000
5.000000/3=1.666667
1.666667+(int)c=1.666667+2=3.666667
地板
 楼主| 发表于 2013-2-2 09:19:33 | 只看该作者
zhangchanggong 发表于 2013-1-31 11:27
有错么?
a+b=5
(float)5=5.000000

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

本版积分规则

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