[求助]关于数据类型的问题!
main(){
float x=2.0,y;
if(x<0.0)y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf("%f\n",y);
}
程序的运行结果是0.500000,为什么呢?当改为int型后,结果是0.000000这又是为什么?
2006-12-05 15:11
2006-12-05 15:16
不是这个原因,是因为y=1.0/x的时候,计算为0.5,但由于y是int型,所以发生强制类型转换为0.

2006-12-05 15:19
还是不明白哦,
1.0/2.0的值怎么算?不是取整吗?那么就该是永远是0啊?
然后若将这个值赋给一个整型变量,则为0,赋给一个单精度变量,则为0.000000。不知道我想得对不对?

2006-12-05 16:48
不对,"/"只有分子与分母都是整数时才是取整,如果有一个不是的话就作运算,小数点后面根据情况取多少位小数.将所运算过的数赋给某个变量时,像上面这种情况,是赋给一个整型变量,故发生类型强制转换.

2006-12-05 18:25
2006-12-05 18:49
乱了
从长计议
x=1.0/2.0;
先算1.0/2.0=0.5不管x等于什么都等于0.5
当进行到x=0.5时程序再判断x的数据类型
当输出时是另一个判断过过程
2006-12-05 19:15
楼主 秦皇岛 的
2006-12-05 19:15
2006-12-05 19:23