根据用户输入,为什么我的循环与其应有的相反?

use*_*700 1 c++ loops while-loop conditional-statements

这是意味着什么:在提示用户之后,"你想输入另一个名字吗?" 如果用户输入"Y",则应提示他们添加其他名称.相反,程序运行在cin << response之后开始的循环,我认为我将条件设置为仅在用户未输入'Y','y,'N,'或'n'时运行.实际上,无论用户如何回答该问题,该程序似乎都与我想要的相反.

#include <iostream>
#include <cstring>
using namespace std;

int main(){

    const int MAX_NUM = 101;
    char name[MAX_NUM];
    char response;
    char nameCorrect = 'n';
    double total = 0;

    do{

        do{
            cout << "Please enter name: ";
            cin >> name;
            cin.ignore(100, '\n');
            cout << "It looks like you entered " << name
                << ". Is this correct? (Y/N) " << endl;
            cin >> nameCorrect;
            while (nameCorrect != 'y' & nameCorrect != 'Y'  & nameCorrect != 'n' & nameCorrect != 'N')
            {
                cin.clear();
                cin.ignore(200, '\n');
                cout << '\n' << "If " << name <<
                    " is what you are trying to enter, "
                    << "please enter Y." << '\n'
                    << "If " << name << " is not correct, plese enter N."
                    << '\n' << "(Y/N): ";
                cin >> nameCorrect;

            }

        } while (nameCorrect == 'n' || nameCorrect == 'N');


        cout << "Would you like to enter another name? (Y/N) ";
        cin >> response;

        if (response != 'y' & response != 'Y' & response != 'n' & response != 'N');
        {
            cin.clear();
            cin.ignore(200, '\n');
            cout << '\n' << "If you would like to enter another name Y."
                << '\n' << "If you are finished, please enter N. " << '\n' << "(Y/N): ";
            cin >> response;

        }


    } while (response == 'y' || response == 'Y');

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Gle*_*aum 5

对于此代码:

if (response != 'y' & response != 'Y' & response != 'n' & response != 'N');
Run Code Online (Sandbox Code Playgroud)

删除;最后

;if有条件执行的,下面的块将始终运行.