啊哈磊_编程从这里起步
标题:
关于强制类型转换的问题。。
[打印本页]
作者:
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