平均增长率计算公式:关于tc2.0的一个小问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/19 16:46:46
main()
{int x=1,y=0;
if(2.1*x+3.2*y==5.3)
printf("aaa\n");
else printf("bbb\n");
}
结果为什么是"bbb"???

其实因为你已经是INT类型,即使你Y=1,那么在处理的时候还是按:x=2,y=3,x+y=5来处理,

这个叫自动类型转换,也就是说它将自动转换为INT型
因为你那个X,Y为整形,计算结果自动转换为整形

那么要是这样 float x,int y;

x*2.1+y*3.2 那么这个结果究竟是转换为什么类型呢?

这个就变成了 int+float,那么就要依赖你的操作符了,

如 int c=x*2.1+y*3.2,那么这个结果计算之后,就自动转换为int.

2.1*1+3.2*0=2.1,而2.1!=5.3,也就是说if条件不成立,所以执行else后边的printf语句,从而输出bbb。

即使初始化y=1,也不一定出来aaa,因为结果已经是浮点数了,浮点数的比较不能直接用==,而应该用相减之后绝对值小于某个很小的数,比如abs(a - b) < 0.000001这样才可以(我已经用VC测试过,直接==还是bbb)

2.1*x=2;
3.2*y=0;
2.1*x+3.2*y=2;
if(2==5.3)
printf("aaa\n");
else
printf("bbb\n");
2不等于5,所以打印出bbb。

好久不用了,早忘记语法了
呵呵,不好意思~

因为if语句的关系表达式不成立,结果为0,所执行else语句。