注意事项:
scanf()函数返回值分为3种:
(1)返回正整数。表示正确输入参数的个数。
(2)返回整数0。表示用户的输入不匹配,无法正确输入任何值。
(3)返回-1。表示输入流已经结束。在Windows下,用户按下CTRL+Z(会看到一个^Z字符)再按下回车(可能需要重复多次),就表示输入结束;Linux/Unix下使用CTRL+D表示输入结束。
关于~的作用解析:
1、在Windows下,用户按下CTRL+Z(会看到一个^Z字符),会停止输入流,scanf会返回-1。
2、-1的补码为11111111 11111111 11111111 11111111 一共4个字节。
3、~是C语言中的按位取反,因此~(-1)结果为00000000 00000000 00000000 00000000刚好为整数0的补码。
4、因此当输入Ctrl+Z时,scanf会返回-1,while(~-1)==while(0),0为假,退出while循环
(此内容来自第一道习题,第一个解答,用户名为lvxuzhou的作者)
getchar()的作用:用于读取换行并清空缓存区来结束本次输入
参考代码:
#includevoid main(void) { int a,b,c,k,sum; char m; sum = 0; while(~(k = scanf("%d%c%d=%d",&a,&m,&b,&c))) { if(k == 3) getchar(); else if((m == '+' && c == a + b) || (m == '-' && c == a - b)) sum++; } printf("%d",sum); }
0.0分
3 人评分