C语言 这道题为什么不选D呢?double不是双精度吗?

2026年09月25日 22:57
有5个网友回答
网友(1):

因为x,y是double类型,所以:
1、当x=1的时候,实际上x=1.0;
2、y = x + 3/2;实际上等于 y = 1.0 + 3/2;
这里就要考虑优先级的问题了,因为/的优先级比+高,所以:
1)先计算3/2,这里3、2都是整数,得出3/2=1;
2)在计算1.0+1,后面的整数1要先转化为1.0,即1.0+1.0后再进行计算。
所以最终结果是2.0

网友(2):

3/2是常量,根据运算的先后顺序,变量类型跟着常量走了。。

网友(3):

除法运算优先级比加法和赋值高,3/2常数计算结果为1,然后x+1赋值给y得2

网友(4):

只定义x,y是打包类型。3÷2是整形等于1

网友(5):

因为3和2都是整形,所以结果是1,而不是1.5