错误输入的scanf设置值

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,为什么?

Joh*_*ger 5

现在,当我输入一个角色时,我以为我会得到一些错误,但是在我把它放入之后返回0等于0,为什么?

确实收到了错误,但你忽略了它.返回值scanf(),如果是非负数,则告诉您已成功转换和分配了多少输入字段.如果输入无法与模式匹配,则表示匹配失败.只要在至少一个输入字段指令之前的模式中的某个点处发生,这将导致分配的字段少于格式中的字段.你可能已经检测到通过scanf()的返回值,如果你有困难检查它.

C专为系统编程而设计.它不会要求发出未经请求的运行时消息,也不会假设在发生意外输入或其他错误时应该执行哪些程序.它为您提供了指导您选择的响应所需的信息,或者实际上,无需指示任何明确的响应.

在提供的程序中,您的选择是忽略错误.如果您描述匹配失败,则任何未分配值的变量都会scanf()保留scanf()调用之前的值,因此忽略该错误会产生与用户输入"0 0"相同的行为.