我写了一个简单的代码,我有一个问题,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int first = 0;
int second = 0;
printf("please enter two integers to determine their relation: \n");
scanf("%d %d",&first , &second);
if ( first == second)
{
printf("%d and %d are equal\n", first ,second);
}
else if (first > second)
{
printf("%d is bigger than %d \n" ,first ,second);
}
else if (first < second)
{
printf("%d is smaller than %d \n" ,first ,second);
}
else
{
printf("something is wrong \n");`
}
system("pause");``
return 0;
}
现在,当我输入一个角色时,我以为我会得到一些错误,但是在我把它放入之后,返回0等于0, 为什么?
答案 0 :(得分:5)
现在,当我输入一个角色时,我认为我会得到一些错误,但是在我把它放入之后返回0等于0,为什么?
您 发生错误,但您忽略了它。 scanf()
的返回值(如果为非负数)告诉您已成功转换和分配了多少输入字段。如果输入无法与模式匹配,则会出现匹配失败。假设在至少一个输入字段指令之前的模式中的某个点处发生,那将导致分配的字段少于格式中的字段。如果您不愿意检查它,您可能会通过scanf()
的返回值检测到这一点。
C专为系统编程而设计。它不会要求发出未经请求的运行时消息,也不会假设在发生意外输入或其他错误时应该执行哪些程序。它为您提供了指导您所选择的响应所需的信息,或者实际上,无需指示任何明确的响应。
在提供的程序中,您的选择是忽略错误。如果您描述匹配失败,则scanf()
未分配值的任何变量将保留scanf()
调用之前的值,因此忽略该错误会产生与用户相同的行为输入&#34; 0 0&#34;。