首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

简单的一道有关问题!

2012-03-13 
简单的一道问题!!求教下如果 float a2,b3,c4 那么a*b*c/2与a*b*c/2.0与1/2*a*b*c有什么不同[解决办法]

简单的一道问题!!
求教下 如果 float a=2,b=3,c=4; 那么a*b*c/2与a*b*c/2.0与1/2*a*b*c有什么不同

[解决办法]
1/2*a*b*c
这个:

(1/2)*a*b*c;
(1/2)的结果为0
[解决办法]
最后一个 计算 1/2 的时候是 int类型 得到的值为零
[解决办法]

C/C++ code
#include<stdio.h>int main(void){    float a=2,b=3,c=4;    printf("a*b*c/2=%f\n",a*b*c/2);    printf("a*b*c/2.0=%f\n",a*b*c/2.0);    printf("1/2*a*b*c=%f\n",1/2*a*b*c);}
[解决办法]
a*b*c/2=12
a*b*c/2.0 =12
1/2*a*b*c=0
vc6.0测试结果!
[解决办法]
前两个是一样的,第三个为0。

为啥这样呢,是因为第三个,程序在运行的时候1/2是按照int执行的,相除为0,遇到a的时候在转化成double类型,前两个是先转化成double类型,在相乘


如果 float a=2,b=3,c=4; 那么a*b*c/2与a*b*c/2.0与1/2*a*b*c有什么不同
[解决办法]
前两个没有区别,第三个式子会先算1/2,结果会取整得0,整个式子也就会等于0了

热点排行