
scanf()函数的返回值是成功读取变量的个数,这里可能返回是1或0,当返回0时,~0为真,则继续循隐正环,所以枯数该循没携首环的意思是,直到成功读取一个字符串时,才结束循环。
C语言有个经验之谈:不要相信编译器,不要相信操作系统,任何时候都要考虑不成功的情形。
这个~的意思迹做是按位取反,所以当读庆段不到字符串时,scanf函数返回-1,二进制码为11111111,取反后为00000000,故结束循环。若读到字符串,返回其他,取反后不会等于00000000,则进姿差衡入循环
1楼说的很好了。scanf只是标准IO库岁顷辩中函数,你确定在调用的时候不会发生IO错误?调用系统内核不会出错?缓冲区不乎握会出错?乎缺