【发布时间】:2019-07-12 04:43:47
【问题描述】:
我使用了scanf("%d" ,&a),但出于好奇,我在输入控制台中输入了字母,令我惊讶的是每次输出都是 39,为什么会这样?
我是语言新手,所以我制作了这个程序,它读取/扫描用户的输入并打印输出(一种复制粘贴程序)
为了舒服起见,我使用整数作为变量值,但在执行代码时,我没有输入整数,而是输入字母 [ex:- 'a', 'aaaaaaa', 'afadfad', 'awsw121', 'a1'] 但每次输出都是 39。
int a;
printf("what`s your age in years?\n");
scanf("%d" ,&a);
printf("your age is %d \n" , a);
每当我输入像['1a' , '2afasfadfa' , '5awwee']这样的输入时
{所有以整数开头的输入}
答案是正确的。我认为代码只读取整数,一旦它得到它的输入,它就会中断那里的执行。
【问题讨论】:
-
那些是字母,不是字母。
-
您期待任何特定的结果吗?如果没有,您很可能想改变学习 C 的方法。“让我们做一些奇怪的事情,看看会发生什么”对于这种特定的语言并不适用。
-
'的 ASCII 值无关紧要。您正在打印一个未初始化的变量。永远不要忽略scanf的返回值;它告诉你有多少项目被成功读取:if (scanf("%d", &a) != 1) { error } -
39 只是
a开头的值,因为它未初始化。当您输入不是数字的内容时,不会进行任何转换,也不会在a中存储任何值。检查来自scanf的返回值。如果您键入的内容以数字开头,则会对其进行处理和转换,直到找到非数字字符。 -
@shubhamranjan 不,我不是指
a的值,我是指scanf函数本身的返回值,如果你这样做r = scanf(...)。