c语言改错题大家看看

程序4:
#include <stdio.h>
#include <conio.h>
main()
{
int i,j;
char ch;
while(ch=getch()!='\r')
{
i++;
printf("%c",ch);
}
printf("you type %d characters\n",i);
}
改错题

#include <stdio.h>
#include <conio.h>
main()
{
int i=0;
char ch;
while((ch=getch())!='\r')
{
i++;
printf("%c",ch);
}
printf("you type %d characters\n",i);
}

错误一:

while(ch=getch()!='\r')

运算符=的优先级非常低,所以该语句等价于while(ch = (getch()!='\r') )
最终ch会得到0或者1的结果,显然与其本意不符
应改为while((ch=getch())!='\r')

img

错误二:

int i,j;

main函数中的i未初始化,后面while循环里直接就i++了,其值是不确定的
应改为int i = 0;
另外变量j后面也没有用到,感觉也可以去掉