C语言:若变量x和y为double类型,则表达式x=1,y=x+3/2的值?

答案是2.0,但我感觉是2,C语言中3/2的结果不应该是1吗,我认为变成(3*1.0)/2结果才能保留一位小数,是和double类型有关吗?求解答。

使用double类型输出的时候,本身就会带小数点
你赋值的x=1,如果用%lf打印,输出的也是1.000000

img

如果你把3/2改成3.0/2,结果就会变成2.5而不是2.0

img


注意:%lf和%f在打印的时候,默认会带6位小数,如果需要限制小数点个数,可以在%和lf之间加限制符号.2
见下图

img

如果对你有帮助,还请点个采纳,万分感谢!

写了个程序,运行结果如图

img


运行结果可以明显看出double类型默认保留6位小数。
此处答案是2.0 是double类型的影响,如果如程序所示输出结果应该是2.000000,此处做了省略,只保留了一位小数。
如果变成(3*1.0)/2 结果如图应该是2.500000。

img

以上仅供参考,如有任何疑问,可以评论回复,看到即回。
希望对题主有所帮助!可以的话,点个采纳!