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,求大神拯救
展开
 我来答
叶片舟
2013-06-12 · TA获得超过652个赞
知道小有建树答主
回答量:285
采纳率:100%
帮助的人:317万
展开全部

呵呵,我来告诉你吧

while(ch = getchar() != '#')//这儿有问题
//首先应清除 != 的优先级高于赋值操作符的优先级=, 所以先执行的是getchar() != '#', 然后ch只能获得的是这个比较的结果0或者1, 所以ch = 0 或 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-12
展开全部
你的while()语句修改一下、因为 != 的优先级要高于 = ,因此会先比较再赋值。
改成 while((ch = getchar()) != '#' ) 先赋值再比较。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式