しんちゃん


私信TA

用户名:uq_62396503440

访问量:1444

签 名:

等  级
排  名 6413
经  验 1420
参赛次数 0
文章发表 8
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

注意事项:

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 人评分

  评论区

  • «
  • »