话说scanf前面为什么要加个~这个鸭,搜了下是取反,但还是不懂
就是要输入三个字符,但不是空格(空格是\0)的时候可以继续输入,如果是空格输入结束的意思。这里其实很容易理解scanf()其实就是返回你通过键盘输入的字符,每个字符都有对应的ascii值,其中空格的ascii值是0,如果你输入空格,那么scanf函数返回0,那么~0就是非0,就是真,这个时候代表输入结束,循环终止。所以你输入的不能是有空格的字符。才能一组一组的输入字符,然后一组一组地显示字符。
题是杭电oj2000
这里解释的较清楚,供参考: while(scanf("%d", &n))的的含义 ~是按位取反scanf的返回值是输入值的个数如果没有输入值就是返回-1-1按位取反结果是0while(~scanf("%d", &n))就是当没有输入的时候退出循环和while(scanf("%d",&n)!=EOF)一个意思知识1:只有-1取反(~-1)是0知识2:scanf读入到EOF时返回-1注:一般这种用法在oj(确保数据正确)上使用,平常基本用不到... https://blog.csdn.net/weixin_44772995/article/details/91352067