c语言的问题编程方面的

double x=3.1415 ;int a=8, 表达式 a/33+(int)(x1000+0.5)/1000.0 的值为什么为9.142
我得出的结果是11.142

前面的计算是6,后面是3.142,相加就是9.142

你的表达式漏东西了吧,结果怎么会是9.142呢?
a/33+(int)(x*1000+0.5)/1000.0这个表达式中
a和33都是int类型,a/33的结果也是int类型,所以 a/33=8/33=0
(int)(x*1000+0.5)这里x*1000+0.5=3142.0,转成int就是3142
(int)(x*1000+0.5)/1000.0 = 3142/1000.0=3.142000
所以整个表达式的值是0+3.142000=3.142
下面是编译器运行的结果

img