标签:
今日写一个程序无论如何也调不好,后来一步步做改动筛选,直到筛到这一步
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