我在第一个switch语句中找不到错误

时间:2014-11-15 17:22:22

标签: c++ switch-statement conditional-statements

我正在阅读使用C ++的书籍编程原理和实践,本书介绍了switch语句的概念,以及当我们想要对一系列案例标签执行相同操作时我们可以做的事情的示例:

cout << "Please enter a digit : "; 
char a = 0; 
cin >> a; 

switch (a) {

case '0': case '2': case '4': case '6': case '8':
cout << "is even\n"; 
break; 

case '1': case '3': case '5': case '7': case '9':
cout << "is odd\n"; 
break;

default:
    cout << "is not a digit\n"; 
    break; 
}

编译器不会报告任何错误但是当我执行程序时,如果我输入值11,例如程序打印输出:是奇数。为什么?我希望看到:不是数字,但我无法理解问题所在。如果我输入值999或其他值,也会发生此问题,为什么?

2 个答案:

答案 0 :(得分:4)

您阅读了单个字符'1'。 1是奇怪的。

下一个字符仍有待阅读。

答案 1 :(得分:0)

cout << "Please enter a digit : "; 

您要求用户输入数字。为什么要将其存储在char?:

char a = 0; 

您需要将其存储在int

int a = 0;

然后你case所有人都有char s:

case '0': case '2': case '4': case '6': case '8':

这应该更改为int s:

case 0: case 2: case 4: case 6: case 8:

同样改变其他情况。