int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
//(double)(3/2) :是将3/2的结果类型转换为双精度=1.5
//(int)1.99 :是将1.99 强制转换为整形=1
// 最外面的(int)把里面的小数都删除 结果 1+0+1*2 所以=3
printf("%d\n",a);
简单分享下吧,
3/2计算的结果是1,因为按整型计算。
(double)1=1.0
1.0+0.5=1.5
(int)1.99=1
所以最终(int)1.5+2=3
1:3/2=1强制double也是1
2:(int)1.99=1/*有损*/,1*2=2
3: 1+0.5+2=3.5 强制int=3
am i right?
打酱油!