почему цикл do while не прерывается?

#c #loops #data-structures #switch-statement #do-while

#c #циклы #структуры данных #оператор switch #do-while

Вопрос:

У меня проблема со следующим кодом

 switch(adminChoice){
    case 1:
        do{
            cout<<"nEnter Student ID: ";
            cin>>studentId;
            cout<<"nEnter Student Name: ";
            cin>>studentName;
            cout<<"nEnter Student Password: ";
            cin>>studentPassword;
            cout<<"nAdd another account? y/n ";
            cin>>adminSubChoice;
        }
        while(adminSubChoice!='n' || adminSubChoice !='N');
        break;
    case 2:
 

do while не прерывается, когда я ввожу n или N для char переменной adminSubChoice , она продолжает выполняться снова и снова. Может кто-нибудь сказать мне, что я делаю не так??

Комментарии:

1. Спасибо, чувак. Я получил свой ответ, а также он упоминается в вопросе adminSubChoice — переменная типа char.

Ответ №1:

Условие adminSubChoice!='n' || adminSubChoice !='N' всегда будет истинным, потому что ни один символ не будет одновременно n и N одновременно.

Условие должно быть adminSubChoice!='n' amp;amp; adminSubChoice !='N' .

Комментарии:

1. В качестве продолжения этого ответа рассмотрите возможность ознакомления с законами Де Моргана, поскольку они, похоже, являются тем, что вы пытались выяснить: en.wikipedia.org/wiki/De_Morgan’s_laws .

2. @MikeCAT это сработало. Теперь я понял. Спасибо

3. @Welbog да, я запутался в операторе OR amp; AND . Спасибо, я проверю это