为什么即使满足条件,我的 if 语句也不运行?

时间:2021-03-10 11:02:27

标签: c++

我尝试制作一个简单的程序,向用户提出一个问题,如果用户回答正确,它会告诉他们他们是正确的,但如果他们不正确,它会告诉他们再试一次,然后代码再次运行.我使用 while 循环来完成此操作,如果他们回答正确,则它会跳出 while 循环。但是当我测试它时,即使我得到了正确的答案,它也不会跳出循环。

    #include <iostream>
    
    int main() {
        int answer;
        while (1 < 2) {
            std::cout << "What is 3 + 5?";
            answer = std::cin.get();
            if (answer == 8) {
                std::cout << "You are correct!";
                break;
            }
            else {
                std::cout << "Wrong answer! Try again";
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

因为 get 函数返回一个字符

不存在字符 '8' 等于整数 8 的现有编码。

或者您需要将字符转换为其对应的整数:

(answer - '0') == 8

或与字符比较:

answer == '8'

如果你真的想读取整数,那么我建议你使用输入操作符 >> 来读取:

std::cin >> answer;

答案 1 :(得分:2)

我认为你应该这样分配答案:

std::cin >> answer;

因为 get 函数以字符串形式获取输入,而您的答案变量是 int。 所以在 if 语句中,它检查 "8" == 8 并返回 false。 总结一下,整个代码一定是这样的:

#include <iostream>

int main() {
    int answer;
    while (1 < 2) {
        std::cout << "What is 3 + 5?";
        std::cin >> answer;
        if (answer == 8) {
            std::cout << "You are correct!";
            break;
        }
        else {
            std::cout << "Wrong answer! Try again";
        }
    }
}