0 c
我写了一个简单的代码,我有一个问题,这是我的代码:
#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;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我输入一个角色时,我以为我会得到一些错误,但是在我把它放入之后返回0等于0,为什么?
现在,当我输入一个角色时,我以为我会得到一些错误,但是在我把它放入之后返回0等于0,为什么?
你确实收到了错误,但你忽略了它.返回值scanf(),如果是非负数,则告诉您已成功转换和分配了多少输入字段.如果输入无法与模式匹配,则表示匹配失败.只要在至少一个输入字段指令之前的模式中的某个点处发生,这将导致分配的字段少于格式中的字段.你可能已经检测到通过scanf()的返回值,如果你有困难检查它.
C专为系统编程而设计.它不会要求发出未经请求的运行时消息,也不会假设在发生意外输入或其他错误时应该执行哪些程序.它为您提供了指导您选择的响应所需的信息,或者实际上,无需指示任何明确的响应.
在提供的程序中,您的选择是忽略错误.如果您描述匹配失败,则任何未分配值的变量都会scanf()保留scanf()调用之前的值,因此忽略该错误会产生与用户输入"0 0"相同的行为.