啊哈磊_编程从这里起步

标题: 关于强制类型转换的问题。。 [打印本页]

作者: jcfielsz    时间: 2013-1-29 10:45
标题: 关于强制类型转换的问题。。
#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


作者: kekegcs    时间: 2013-1-29 10:45
你的程序并没有错,错在不是你想要的结果。 ‘/’的优先级高于‘+’
如果把表达式(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:
作者: zhangchanggong    时间: 2013-1-31 11:27
有错么?
a+b=5
(float)5=5.000000
5.000000/3=1.666667
1.666667+(int)c=1.666667+2=3.666667
作者: jcfielsz    时间: 2013-2-2 09:19
zhangchanggong 发表于 2013-1-31 11:27
有错么?
a+b=5
(float)5=5.000000

3Q~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2