在C语言 中要求以%d的形式输入,但输入的是英文字母,编译器如何处理

2024-12-18 12:32:23
推荐回答(5个)
回答1:

编译器返回输入 没成功 信息,例如:
int x,k;
k = scanf("%d",&x);
你拍入了 英文字母,x 没读到数据,scanf 返回 0 给 k.
scanf 返回 成功 读入的数据个数,一个也没读到,返回 0。

int a,b,c,k;
k = scanf("%d %d %d", &a,&b,&c);
你拍入了 123 456 abc
scanf 返回 成功 读入的数据个数 2. (a=123,b=456,c 没读到数据)
你可以添打印语句:
if (k<3) printf("read err !");

回答2:

转换失败,返回成功转换的数值个数。

e.g.

scanf("%d%d%d", &a, &b, &c);

输入1 2 a 转换失败,a==1,b==2,,c没有被修改,可能是垃圾值。如果之前c被赋值就不是。

输入1 2 3a转换失败,a==1,b==2,c==3,返回3。

输入a转换失败,a,b,c的值都没变,可能是垃圾值。

注意转换失败之后那个字符依然留在输入流里。

回答3:

类型不配,一般将是一个绝对值很大的负数。

回答4:

会输出一串不知道什么的数字

回答5:

系统的是随机数