楼主你好
你定义的宏:PI=3.14 这里没有指明PI的数据类型
在c语言中 浮点数没有指明类型的 默认为双精度double型的
而你定义的s、r都是单精度float 这样在执行s = r * r * PI 会发生类型不匹配的错误
一个简单的方法就是: float r,s 改为:double r,s
希望能帮助你哈
PI 被定义为 3.14,第9行预处理的结果是:
s=r*r*3.14;
常量3.14默认为double型,那么等号右面的结果就是double型,而s被定义为 float,float表达的数的范围没有double大,所以有编译告警。
修改:两种方法:把3.14定义为3.14f, #define PI 3.14f
或者,r s 两个变量定义为double
#include
#include
#define PI 3.14;
int main(void)
{
float r,s;
printf("输入圆的半径:\n");
scanf("%f",&r);
s = r * r * PI;
printf("圆的面积为:%f\n",s);
return 0;
}
输入圆的半径:
2
圆的面积为:12.560000
Press any key to continue
没问题啊
PI = 3.14 这个字面值是double类型,不是float类型
直接解决的方法就是把r s都定义成double
#include
运行程序输入时把r输成5.0(r.0)试试,应该就是个变量类型不同的问题吧。