请高手帮忙解释下这段程序 int a;a=(int)((double)(3⼀2)+0.5+(int)1.99*2); printf("%d尀n",a);结果为3.

2024-12-18 07:49:05
推荐回答(4个)
回答1:

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);

回答2:

简单分享下吧,
3/2计算的结果是1,因为按整型计算。
(double)1=1.0
1.0+0.5=1.5
(int)1.99=1
所以最终(int)1.5+2=3

回答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?

回答4:

打酱油!