码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-17 23:54:01      阅读:159      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!