首页 > 其他 > 详细

由“左操作数必须为左值”引起的反思

时间:2015-04-17 23:51:31      阅读:244      评论:0      收藏:0      [点我收藏+]

今日写一个程序无论如何也调不好,后来一步步做改动筛选,直到筛到这一步

    bool in_word=true;
    char ch;
    while (ch=getchar() && in_word){}

循环到这一步无论如何都不继续进行,于是我就改变了一下顺序。

ch=getchar();
while(in_word){}

程序又可以正常运行了,遂将获取字符的语句顺手加到了后面。

while (in_word && ch=getchar()){}

然后就出现了error C2106: “=”: 左操作数必须为左值。
查阅资料后发现原因在于=和&&的优先级问题,=的优先级比&&低,所以先执行&&,原代码等效成while((in_word&&ch)=getchar()){}
所以应加上括号while(in_word&&(ch=getchar())){}

以后写代码应该多注意!

由“左操作数必须为左值”引起的反思

原文:http://blog.csdn.net/xiaxianga/article/details/45103589

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!