为什么我无法覆盖循环中的变量?

时间:2015-06-25 01:41:03

标签: c++ for-loop

当我通过for循环时,应该覆盖变量hey,所以如果我不输入1,它会说“bye”,但是如果我在循环时输入1,那么应该说“你好”,而是说“再见”。

#include <iostream>
using namespace std;
int main(){
    char hey;
    for (int n = 0; n <= 10; n++){
        cout << "enter 1" << endl;
        cin >> hey;
        if (hey == 1)
                cout << "hello\n";
        else
            cout << "bye";
    }
}

5 个答案:

答案 0 :(得分:1)

ASCII数字49的字符'1'与数字1不同 使用

if (hey == '1')

如果你想将某些东西与角色a进行比较,你也必须使用'a'。这里也一样。

答案 1 :(得分:1)

问题是hey的类型为char。因此,从控制台读取的输入被解释为char。您可以进行比较if (hey == '1')或将hey的类型更改为int等内容。

答案 2 :(得分:0)

char hey更改为int hey。它会像你期望的那样工作。

答案 3 :(得分:0)

如果用户输入&#39; 1&#39;,则char将是&#39; 1&#39;的字符代码,即49.

https://msdn.microsoft.com/en-us/library/60ecse8t(v=vs.80).aspx

您可以将代码更改为

if (hey == '1')

if (hey == 49)

顺便说一下,这篇文章的标题不正确。

答案 4 :(得分:0)

您正在将Ascii字符值与Integer进行比较。 Ascii值为1