C++输入的字符变成了笑脸
while(ch=getchar()!='#')/*读入分析串*/{if((ch!='i')&&(ch!='+')&&(ch!='*')&&(ch!='(')&&(ch!...
while(ch = getchar() != '#')/*读入分析串*/
{
if ((ch != 'i') &&(ch != '+') &&(ch != '*')&&(ch != '(')&&(ch != ')')&&(ch != '-')&&(ch != '/'))
{
printf("输入串中有非法字符%c\n",ch);
exit(1);
}
B[j]=ch;
j++;
}
这是一个程序段,无论我输入什么,ch获得的都是一个笑脸,然后就走了exit那条语句,到底这破笑脸是怎么回事啊????
环境是VS2013,求大神拯救 展开
{
if ((ch != 'i') &&(ch != '+') &&(ch != '*')&&(ch != '(')&&(ch != ')')&&(ch != '-')&&(ch != '/'))
{
printf("输入串中有非法字符%c\n",ch);
exit(1);
}
B[j]=ch;
j++;
}
这是一个程序段,无论我输入什么,ch获得的都是一个笑脸,然后就走了exit那条语句,到底这破笑脸是怎么回事啊????
环境是VS2013,求大神拯救 展开
2个回答
展开全部
呵呵,我来告诉你吧
while(ch = getchar() != '#')//这儿有问题
//首先应清除 != 的优先级高于赋值操作符的优先级=, 所以先执行的是getchar() != '#', 然后ch只能获得的是这个比较的结果0或者1, 所以ch = 0 或 1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-12
展开全部
你的while()语句修改一下、因为 != 的优先级要高于 = ,因此会先比较再赋值。
改成 while((ch = getchar()) != '#' ) 先赋值再比较。
改成 while((ch = getchar()) != '#' ) 先赋值再比较。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询