C语言整型变量输入时输入字符会怎么样?

如题所述

C语言输入整型变量时,需要用到scanf函数,形式为

scanf("%d",&a);
即读入一个整型变量,并将值赋值给a。
执行该操作时,scanf会到输入中,读取字符,如果是合法的整型字符(0~9),会根据规则计算值并存入到a中。当遇到非数字字符时结束。

所以,如果系统要求读入整型时,输入了非数字字符,那么scanf就无法得到有效值并赋值给a,这时scanf会出错,对a不做处理,同时以返回值方式报错。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-21
输入之后不会存入对应的内存区域,相当于没输入
你可以用下面代码去测试:
#include "stdio.h"
int main()
{
int a=0;
scanf("%d",&a);
printf("%d\n",a);

}
如果你输入字符a,
那么输出就是0,可以看到,int变量a的值没有被scanf函数改变,也就得出上面的结论。追问

#include
void main()
{
int f;
scanf ("%d",&f);
while (f=80)
{
printf ("请重新输入!\n");
scanf ("%d",&f);
}
printf ("%d",f);
}
这个程序再输入一个字母时 为什么会无限循环,并且无法输入???

第2个回答  2013-03-21
变量的值取默认值,没有变化。追问

#include

void main()
{
int f;
scanf ("%d",&f);
while (f=80)
{
printf ("请重新输入!\n");
scanf ("%d",&f);
}
printf ("%d",f);
}
这个程序在输入一个字母时 为什么会无限循环???

追答

因为始终不能正确读取,需要清除缓冲
#include
void main()
{
int f;
scanf ("%d",&f);
while (f=80)
{
printf ("请重新输入!\n");
fflush(stdin); /* 清除缓冲 */
scanf ("%d",&f);
}
printf ("%d",f);
}

本回答被提问者采纳
第3个回答  2013-03-21
应该是一个不确定的数(有可能是输入字符的地址(猜))追问

#include

void main()
{
int f;
scanf ("%d",&f);
while (f=80)
{
printf ("请重新输入!\n");
scanf ("%d",&f);
}
printf ("%d",f);
}
这个程序在输入一个字母时 为什么会无限循环???

第4个回答  2013-03-21
你试一试不就知道了追问

#include

void main()
{
int f;
scanf ("%d",&f);
while (f=80)
{
printf ("请重新输入!\n");
scanf ("%d",&f);
}
printf ("%d",f);
}
这个程序在输入一个字母时 为什么会无限循环???

相似回答