为什么程序总是返回"假"?

Somewhy the program always returns 'false'?

本文关键字:返回 程序 为什么      更新时间:2023-10-16

为什么这段代码总是返回'false'并激活goto,即使我输入一个数字?有人能帮帮我吗?谢谢你!

char userValue = '4';
auto h = true;
tryAgain:
std::cout << "Please type a digit: ";
std::cin >> userValue;
switch (userValue) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
    h = true;
default:
    h = false;
}
switch (h) {
case true:
    std::cout << "This character is a digit.";
case false:
    std::cout << "Wrong! Try again!" << std::endl;
    goto tryAgain;
}

您只是忘记了在已经处理的情况下跳出来。这样就可以在处理完true案件后再处理false案件。

switch (h) {
case true:
    std::cout << "This character is a digit.";
break;
case false:
    std::cout << "Wrong! Try again!" << std::endl;
    goto tryAgain;
    //not necessarily needed because goto leaves the scope anyway.
    //break;
}

这里也是同样的问题,如果你不想停止掉下来,请中断:

switch (userValue) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
    h = true;
    break;
default:
    h = false;
    break;
}