- while(scanf("%d", &n) != EOF)
- while(~scanf("%d, &n))
我主要解释一下第二种,一味地一种比较常见。首先第一种我们去查询EOF的定义我们就发现EOF代表的就是-1,而第二种的波浪号是c语言的一种操作符,也就是按位取反。什么是按位取反?比如说10101按位取反就是01010,首先EOF按位取反就是
100000000000000000000000000000001-原码
11111111111111111111111111111111111110-反码
11111111111111111111111111111111111111-补码
计算机存储的就是补码
也就是我们会用补码来进行按位取反
结果是:
000000000000000000000000000000000
然后因为0为假,循环就会停下来。
这就是波浪号的使用原因。