magicpower 发表于 2020-3-3 14:28:48

求助,为什么结果和我预期不同,好像有bug

本帖最后由 magicpower 于 2020-3-3 14:50 编辑

1 #include <stdio.h>
2 int main(void)
3 {
4         char ch;
5         int num=0;
6         while(ch=getchar() && ch != '#')
7         {
8               if(ch == '.')
9               {
10                         putchar('!');
11                         num++;
12               }
13               else if(ch == '!')
14               {
15                         putchar(ch);
16                         putchar('!');
17                         num++;
18               }
19               else
20               putchar(ch);
21         }
22         printf("%d",num);
23         return 0;
24 }



当我输入#后没有停止while循环,而且不论我打什么,while里的好像都没有执行,这是为什么,是哪有bug吗

qiuyouzhi 发表于 2020-3-3 14:41:04

用代码格式发代码,而且代码前面不要有序号
把while循环的ch != '#' 改成
getchar() != '#'
试试

magicpower 发表于 2020-3-3 14:45:32

qiuyouzhi 发表于 2020-3-3 14:41
用代码格式发代码,而且代码前面不要有序号
把while循环的ch != '#' 改成



谢谢,我已经知道是哪出问题了,逻辑运算符比赋值运算优先级高,所以while永远为true

qiuyouzhi 发表于 2020-3-3 14:49:05

magicpower 发表于 2020-3-3 14:45
谢谢,我已经知道是哪出问题了,逻辑运算符比赋值运算优先级高,所以while永远为true

嗯嗯,那就把帖子类型设置成已经解决吧
在编辑帖子-标题旁边

jackz007 发表于 2020-3-3 14:52:39

      用无缓冲的键盘输入,每按下一个键,无需按下回车键,程序同步获得输入#include <stdio.h>
#include <conio.h>
int main(void)
{
      char ch                           ;
      int num                           ;
      for(num = 0 ; (ch = getch()) != '#' ; num ++) {
                if(ch == '\r') printf("\n") ;
                else putch(ch)            ;
      }
      if(num) printf("\n")                ;
      printf("%d\n" , num)                ;
}
页: [1]
查看完整版本: 求助,为什么结果和我预期不同,好像有bug