这是原代码
#include<stdio.h int main () { char b; while(~scanf("%c\n",&b)) { if(b>='A'&&b<='Z') printf("%c\n",b+32); else if(b>='a'&&b<='z') printf("%c\n",b-32); } return 0; }
我对这个while(~scanf("%c\n",&b))的意思不明白
这是原代码
#include<stdio.h int main () { char b; while(~scanf("%c\n",&b)) { if(b>='A'&&b<='Z') printf("%c\n",b+32); else if(b>='a'&&b<='z') printf("%c\n",b-32); } return 0; }
我对这个while(~scanf("%c\n",&b))的意思不明白
scanf函数的原型是:
int scanf(const char *format, ...)
返回值是读取成功,则返回成功匹配和赋值的个数。如果到达文件末尾或发生读错误,则返回 EOF。
在这里是读取1个字符,正常应该返回1.取反,也就是1,它的结果是-2。EOF的定义值是-1,~EOF则为0,不为0则是true
因此这个循环会一直执行,直到遇到EOF。