double a;
scanf("%f",&a); //应该使用scanf("%lf",&a);
执行上面语句时,发现double类型的输入不能使用%f进行输入,得用%lf才能正常得到a的值。
而在输出double类型时却可以用%f,这是因为printf只认识双精度,遇到%f自动将float型的参数转换成double型。
但是因为scanf接收一个指针,而float和double指针没有类似的指针提升,所以必须准确、区分。
故double型的输入输出形式如下:
double a;
scanf("%lf",&a);
printf("%f",a);//printf("%lf",a);也可以