中易网

C语言计算圆的面积的问题

答案:6  悬赏:20  
解决时间 2021-02-17 02:13
代码为:
#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;
}
出现D:\1.cpp(9) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data这个错误,如果忽略的话,输入r后,s的值就为零,怎么解决?
最佳答案
楼主你好
你定义的宏:PI=3.14 这里没有指明PI的数据类型
在c语言中 浮点数没有指明类型的 默认为双精度double型的

而你定义的s、r都是单精度float 这样在执行s = r * r * PI 会发生类型不匹配的错误

一个简单的方法就是: float r,s 改为:double r,s

希望能帮助你哈
全部回答
#include 这个有用? 运行程序输入时把r输成5.0(r.0)试试,应该就是个变量类型不同的问题吧。
同2楼
PI = 3.14 这个字面值是double类型,不是float类型 直接解决的方法就是把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,第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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
火星有什么好处
为什么我无论下什么五笔打出来的都是英文
我叫郑玲玲,我的英文名怎么取?
报读中国医科大学网络教育,有学生证吗?如果
吃七八分饱和吃十分饱有什么区别?呢
黄梅调演员凌波丈夫是谁
台湾豪门世家理容名店
城市风情街地址在哪,我要去那里办事
自幼丧父被母亲一手养大的男生,性格有什么特
日本核泄漏、在海里的海藻有没有被污染到、我
悲 中 从 来 打一成语
四川田房收费站到大理多少公里
跟女友出街我出钱 我知道是正常 但是多多小小
【求助】是进深圳地铁还是供电局好?
速腾1.4T在高速上时速一般都到多少?百公里油
推荐资讯
求诡术妖姬吧的贴吧头像
置之死地而后生用英文怎麼说
哈佛老师给的题目,关于图论的数学证明
有一植物拍成照片,怎么能放到百度,问一下是什
求钢材质保书修改方法
求我被绑架到贵族女校当庶民样本漫画资源现在
西安市长安区物资国有资产管理公司地址在哪,
苏海海圪旦怎么去啊,有知道地址的么
网校的视频被exe加密了,请问有什么办法进行
和老公吵架了我应该把他锁在门外吗
香港风光保健品新骗局揭秘
农历1989年2月26是阳历多少??
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?