浮在C上的麻烦

我在C中有这个小程序,它使用递归函数(使用while循环实现)计算正整数N平方根x 。 如果我用这个计算x

 x = (1/2)*(x + N/x) //x0 = 1.0 

然后x继续增长到inf,然后是nan。 但是,如果我使用这个:

 x = (x + N/x)/2 //x0 = 1.0 

它工作正常,为什么? 谢谢。

1/2执行整数除法,其结果为0 ,将两个操作数或两个操作数更改为double ,例如:

 1.0/2