円周率を計算するプログラム。

#include <stdio.h>

int main(void)
{
float pi=0.0;
int s=1;
int n;

for(n=1;;n++)
{
s=-1*s;
pi=pi+1/(2*n-1)*s;

printf("%d回目:%f\n",n,4*pi);

}

return 0;
}

試行錯誤の上に1/2の前に(float)を入れたら正しく動作したんですが,
なんで(float)が必要なのかわからないので教えてください。
型の昇格で型をint→floatと勝手に変えてくれるんじゃないんですか?