【问题标题】:C++ logical comparison issue using "!"使用“!”的 C++ 逻辑比较问题
【发布时间】:2020-04-01 16:51:51
【问题描述】:

我刚刚完成了一项家庭作业,我遇到了一个“错误”(可能只是我很愚蠢);当两个堆栈都为空时,我想打破一个 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。

【问题讨论】:

  • ISEMPTY 返回什么?
  • 此问题中显示的代码无法满足 stackoverflow.com 对minimal reproducible example 的要求,因此这里的任何人都不太可能确定问题所在。这个问题必须是edited 以显示一个最小示例,不超过一两页代码(“最小”部分),任何人都可以剪切/粘贴、编译、运行和重现所描述的问题(“可重现”部分)完全如图所示(这包括任何辅助信息,例如程序的输入)。请参阅How to Ask 了解更多信息。
  • @jaredvan 你已经得到了一个看起来正确的答案,但你还没有接受它。为什么?

标签: c++ stack operators


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多