为什么(float)2/1会等于0.25啊?求解答

为什么(float)2/1会等于0.25啊

img


真的好奇怪,别的(float)4/2等于2都是可以计算出的,是哪里出了毛病啊,我已经搞了两个小时了,正经人求解,入门,请教。

(float)2/1=2.0

首先,这个问题通过打断点,单步调试查看数组a的值就可以发现问题。不过看你的截图好像会用断点,那就不细说了。
原因是对于q的越界访问,压到数组a了,改变了a[0]的值
q只有4个元素,但是

for(i=4;i>=1;i--) {
    q[i] = a[i]/(float)a[i-1];
}

这里给q[4]赋值,导致越界
最后,下次提问尽量把代码粘贴出来,不要发截图。