随笔笔记 算法竞赛入门经典 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
SoulWINTER OIBlogs