因为y处是先执行括号内的运算,而括号内是两个整形的除法运算,结果也是整形结果7,然后将整形转为double型,那肯定是7.0不可能是7.5了。
有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~
x = (double)a/b 的意思是先将a转换成double类型再进行a/b运算,浮点型和整数进行运算结果为浮点型;
y = double(a/b) 的意思是先进行a/b运算再将结果转换为double型,a和b都是整数,a/b运算结果也是整数即 7 ,将7再转化成double型结果为7.0
y = double(a/b)是将a/b的结果转成double类型
a和b都是int类型,所以a/b的结果也是int类型,30/4 = 7.5,取整就是7,然后转成double类型,就是7.0
如果写成:
y = (double)a/b; 就是先把a转成double类型,这时候计算的时候,也会把b提升为double类型,(double)a/b的结果就是7.5