while循环和char

时间:2015-10-04 17:29:05

标签: c++ loops

代码应该向用户询问一个字母,然后显示相当于它的ASCII数字最多3次。但它所做的只是向用户询问角色1次并显示它的ASCII,而它应该问问题3次。

#include <iostream>
using namespace std;

int main() {
    char asciiCharacterNumber = 0;

    while(asciiCharacterNumber <= 3) {
        cout << "Character:: ";
        cin >> asciiCharacterNumber;
        cout << "Value of ASCII: " << (int)asciiCharacterNumber << endl;
        asciiCharacterNumber++;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:4)

您正在(使用cin)阅读相同的asciiCharacterNumber变量。由于可打印字符的ASCII值大于3,因此用户通常输入的第一个字符将终止循环。

解决此问题的一种方法是将用于阅读的变量和计数器分开:

int counter = 0;
char asciiCharacterNumber;

while (counter < 3) {
    cout << "Character:: ";
    cin >> asciiCharacterNumber;
    cout << "Value of ASCII: " << (int)asciiCharacterNumber << endl;
    counter++;
}

编辑:

如果你想要一个迭代三次的循环,for循环可能更合适:

char asciiCharacterNumber;

for (int i = 0; i < 3; ++i) {
    cout << "Character:: ";
    cin >> asciiCharacterNumber;
    cout << "Value of ASCII: " << (int)asciiCharacterNumber << endl;
}