首页 > 解决方案 > 使用“!”的 C++ 逻辑比较问题

问题描述

我刚刚完成了一项家庭作业,我遇到了一个“错误”(可能只是我很愚蠢);当两个堆栈都为空时,我想打破一个 while 循环。

这没有用

while(!poles[0].ISEMPTY() && !poles[1].ISEMPTY){
      //iteratively solve towers of hanoi

这有效

while(poles[0].ISEMPTY()!= true && poles[1].ISEMPTY()!=true){
     //iteratively solve towers of hanoi

}

我觉得我缺少一些关于逻辑运算符的基本知识......我的意思是 ISEMPTY 返回一个布尔值,如果堆栈为空,则返回 true。

标签: c++stackoperators

解决方案


您在第二次调用ISEMPTY:P时忘记了括号

while(!poles[0].ISEMPTY() && !poles[1].ISEMPTY()){

修复它。(您在工作示例中没有犯这个错误)。

鉴于指向函数的指针不为空,它的计算结果总是为真。


推荐阅读