在用作真值的赋值语句前后加上括号是什么意思

int main()
{
Cstack s;
s.init();
char ch;
cout<<"请输入字符:"<<endl;
cin>>ch;
while(ch!='#'&&s.push(ch))
cin>>ch;
cout<<"\n现在输入栈内数据\n";
while(ch = s.pop())
cout<<ch;
}
就是这句出的问题while(ch = s.pop()) :在用作真值的赋值语句前后加上括号
如何更改才能使这个错误消除

如果你把一个赋值语句看成调用一次函数,那么这个赋值语句的反悔值就是所赋的值,比如
if (a = 0)
那么 if 里面得到的值就永远是 0
如果 if (a = 1) 则永远为1
所以,你的题目里,就相当于 先将s.pop() 的返回值付给ch, 同时如果这个值非0, while语句就进行下去,否则,就退出循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-03
如果你把一个赋值语句看成调用一次函数,那么这个赋值语句的反悔值就是所赋的值,比如
if (a = 0)
那么 if 里面得到的值就永远是 0
如果 if (a = 1) 则永远为1
所以,你的题目里,就相当于 先将s.pop() 的返回值付给ch, 同时如果这个值非0, while语句就进行下去,否则,就退出循环。本回答被网友采纳
第2个回答  2015-06-25
先将s.pop() 的返回值付给ch, 同时如果这个值非0, while语句就进行下去,否则,就退出循环。
第3个回答  2012-06-13
直接加上括号啊while((ch = s.pop())),虽然执行效果 一样了,但避免了编译的时候出现的“警告:建议在用作真值的赋值语句前后加上括号 ”

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网