GCC的EOF规定为-1,而-1在内存里以补码形式存放,为11111...111全为1,而~位取反则把它变成了000..0000全为0,也就是正数0。
因此-1位取反为0,用作逻辑判断,不过确实不太好用,(scanf .. == 2)更好。以下代码说明:
因此-1位取反为0,用作逻辑判断,不过确实不太好用,(scanf .. == 2)更好。以下代码说明:
程序代码:
#include <stdio.h> int main(int argc, char **argv) { printf("EOF = %d , %d\n",EOF,~EOF); return 0; }