这句话没错,但你定义和输出都是单精度类型的float c;//这个是单精度类型c=b/a; //b/a的结果是双精度类型(即double)的但你赋值给c,所以自动转为了单精度类型printf("c=%f",c);更何况%f是以float输出定义双精度类型是double c双精度输出是用%lf