简单的一道有关问题!

简单的一道问题!!
求教下 如果 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了