C程一个入门级问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:43:23
今天完成老师布置得作业,让输入20个数字,统计其中得正数,负数和0得个数,我做完了,但中间发现一个问题,首先我的程序是这样得:#include "stdio.h"
#include "conio.h"

main()
{
int j=0,k=0,l=0,i;
int a;
for(i=0;i<20;i++)
{
scanf("%d",&a);
if(a!=0)
{
if(a>0) k++;
else j++;
}
else l++;
}

printf("%d,%d,%d",k,j,l);
getch();
}
我发现当我定义a为float型时,scanf("%d",&a),我按整型变量输入,那么我得出的结果是不管输入什么,统计的永远是20个正数,也就是K=20,如果改为scanf("%f",&a),那么程序就正确了,如果定义a为int型,scanf("%d",&a),这样也是正确的,请问,只不过是变量的类型不同,为什么在符号上会出现问题,我的理解是整形和浮点型就一个没小数,一个有小数,符号上应该没什么问题啊。到底是怎么回事,请仔细讲解一下。

scanf("%d",&a),这个的意思就是从a中读取int类型的数据
你可以看看scanf的用法!不同的“%?”读取进来的数据时不同的

按你说的,我在我的C上运行,也行的..