新手C语言问题,望大家指点指点

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:50:45
#include<stdio.h>
void main()
{/*①*/
int sign=1;
float deno=2.0,sum=1.0,term;/*①*/
while(deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("%f\n",sum);
getch();
}
为什么我将①这段改成
int sign,sum,deno,term;
就不行呢?

晕。。当然不行了。你定义的sign是一个整形变量也就是整数。而你后面定义的deno,sum,term都是单精度浮点也就是带有小数点的。怎么能把不同类型的单精度浮点的值赋予整形变量?单精度变量本身的级别高于整形变量,除非强制降级转换,否则出错。
这是最基础的概念问题,你没有打好相关基础,多看看相关教程。
不好意思我是以JAVA的程式规定来解释你的C,如果C没有分得那么明确的话那我不知道什么问题,除了这一点都是应该可以编译到的。

将①这段改成
int sign,sum,deno,term; 编译应该能通过,
不知道你说不行指的是什么
将①这段改成
int sign,sum,deno,term; 后
要注意给变量赋初值,
再把printf("%f\n",sum);
改为printf("%d\n",sum);
应该可以的