随笔笔记 算法竞赛入门经典 ch3

关于读取

  • scanf() 读取到空格自动停止
  • getchar() 读取结束返回 EOF (整型)

e.g.

 

 1 #include <iostream>
 2 #include <stdio.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int n;
 7     for(;;)
 8     cout << scanf("%d",&n);
 9     
10     return 0;
11 }

 

这样如果多次输入所得结果是输入个数*1

 

 

遇到 while(~scanf("%d",&n)) 

while(~scanf("%d",&n))

<=>  while(scanf("%d",&n)!=EOF)

 1.正常输入的时候,scanf返回输入的数字如1,2,3等等,对这些数字取非,不会成为0,就会执行循环;

 2.错误输入指的就是没有输入的时候,scanf返回的是EOF(End Of File),EOF=-1,对EOF取非,就是对-1取非

[~是位运算,它是将数据在内存中的每一位(当然是二进制)取反。-1在内存中所有位全部为1,~(-1)=0,即对-1取非就是0]

就会跳出循环。

来自 http://blog.csdn.net/wtyvhreal/article/details/42006055

 

posted @ 2018-01-30 08:52  soulwinter  阅读(103)  评论(0编辑  收藏  举报