杭电oj----1000+scanf("%d%d",&num1,&num2)!=EOF的理解

@君照流华

杭电第1000道,对程序结束条件产生迷惑,然后试着研究了一下scanf函数

题目比较水,但是刚开始看英文对程序结束条件十分疑惑,
后来看了小伙伴贴的代码发现程序不需要结束条件,只要求对输入能够输出结果

解决代码如下

#include 
#include
using namespace std;
int main()
{
     
    int num1,num2;
//C++
//  while(cin>>num1>>num2)  
    while(scanf("%d%d",&num1,&num2)!=EOF)		//C
        cout<<num1+num2<<endl;
    return 0;
}
  1. EOF = “end of file”,在程序中对应的是有符号数-1
    而ASCII代码值的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。
    很多文件处理函数
    处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。

  2. scanf函数有返回值,当其成功读入几个值,返回值就为几。 所以代码判断条件scanf("%d%d",&num1,&num2)!=EOF中,
    成功读入一个结果为1;读入两个为2;读入失败则为0;不会等于EOF对应的-1。
    !!!注意:EOF的使用需要调用stdio.h的库

你可能感兴趣的:(杭电OJ刷题,hdoj1000,scanf,EOF,C)