我们在操作符一章中学了许多对二进制操作的操作符,例如&(按位与),|(按位或),按位异或(^),但是还有个~操作符也是可以对二进制进行操作的,它的作用是使得二进制位全取反。
例如-1的补码全为1,~(-1)则使得结果为零
int a = -1;
int b = 0;
printf("%d\n", a);
printf("%d\n", ~a);
-1结合~这个操作符就会返回零,而零在程序为假,在跳出循环,if判断中都有涉及,我们还接触过一个函数叫scanf,它返回的是接收到的数字,字符个数。在我下面这篇文章中有对scanf返回值有较为详细的解释。
读取失败会返回EOF,而EOF在编译器看来是-1,那么当我们要多组输入的时候,结束输入就可以用这个操作符。但是想让scanf返回EOF平常的输入时无法办到的,读取失败的含义太宽泛,在一些读取失败的例子中scanf的返回值也不是-1,具体可参考我上面那篇scanf的返回值,这里介绍了不同输入时scanf返回值情况,希望对读者有所启发。