c++ - C++ 中输入验证的逻辑错误

标签 c++ validation

以下代码存在逻辑错误 每次我运行它并输入 1 或 0 代码 while循环中仍然执行。 有人能告诉我为什么吗?

bool getmove()
{
    bool move;
    cout << "Would you like to make the first move?(1 for yes 0 for no)\n";
    cin >> move;
    while(move != 1 || move != 0 || !cin.good())
    {
        if(!cin.good())
        {
            cout << "ERROR please try again\n";
            cin.clear();
            cin.ignore(80,'\n');
            cin >> move;
        }
        else
        {
            cout << "Invalid input please try again\n";
            cin >> move;
        }
    }
    return move;
}

最佳答案

看这一行:

while(move != 1 || move != 0 || !cin.good())

总是move != 1 || 的情况move != 0(因为不能两者兼而有之)。

此外,您可以通过读取字符串之类的内容并对其进行测试来避免一些麻烦,而不是依赖于强制转换。

关于c++ - C++ 中输入验证的逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022741/

相关文章:

c++ - 使用 Visual Studio 2010 实现 CURL

c++ - 在溢出的情况下,i++ 是否会为小于 int 的有符号类型调用未定义的行为?

C++:在进程内存中搜索

java - vavr validator 的验证流

Angular自定义异步验证器保持待处理状态

php - 如果不需要字段,Laravel 不会验证

java - 如何转换 byte[] -> uint8_t[] 而不产生 JNI 问题?

c++ - 在 VBA 中返回一个对象

javascript - 禁用某些字段的 Bootstrap 验证器

ruby-on-rails - Rails 表单在验证错误后呈现错误的 URL(不保留传递的参数)