Проблема логического сравнения в C ++ с использованием "!" - PullRequest
0 голосов
/ 01 апреля 2020

Я только что выполнил домашнее задание, и я столкнулся с «ошибкой» (возможно, я просто глуп); У меня было некоторое время, которое я хотел сломать, когда два стека были пустыми.

Это не сработало

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

}

Я чувствую, что мне не хватает какой-то основы c в логических операторах ... Я имею в виду, что ISEMPTY возвращает bool, true, если стек пуст.

1 Ответ

2 голосов
/ 01 апреля 2020

Вы забываете парены при втором вызове ISEMPTY: P

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

исправляет это. (Вы не допустили этой ошибки в своем рабочем примере).

Учитывая, что указатель на функцию не нулевой, он всегда будет иметь значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...