求助,为什么结果和我预期不同,好像有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吗 用代码格式发代码,而且代码前面不要有序号
把while循环的ch != '#' 改成
getchar() != '#'
试试 qiuyouzhi 发表于 2020-3-3 14:41
用代码格式发代码,而且代码前面不要有序号
把while循环的ch != '#' 改成
谢谢,我已经知道是哪出问题了,逻辑运算符比赋值运算优先级高,所以while永远为true magicpower 发表于 2020-3-3 14:45
谢谢,我已经知道是哪出问题了,逻辑运算符比赋值运算优先级高,所以while永远为true
嗯嗯,那就把帖子类型设置成已经解决吧
在编辑帖子-标题旁边 用无缓冲的键盘输入,每按下一个键,无需按下回车键,程序同步获得输入#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]