c ++“案例标签值超过类型的最大值”

时间:2013-10-02 01:23:59

标签: c++

所以我有这个类的分配,我需要使用switch语句,case值必须是2,4,6,8和10.问题是当我使用10作为一个case值然后做g ++它表示案例标签值超过了类型的最大值。我不确定我做错了什么。这是我的代码。如果我使用低于10的任何数字,它的效果非常好。

    #include <iostream>

using namespace std;

int main()
{
char number;
cout << "Enter a number. ";
cin >> number;
switch(number)
{
case '2':
cout << "shoe\n";break;
case '4':
cout <<"door\n";break;
case '6':
cout <<"sticks\n";break;
case '8':
cout <<"straight\n";break;
case '10':
cout <<"big fat hen\n";break;
default:
cout << "Not much into kids' rhymes, ar you?\n" << endl;
}   
}                                   

3 个答案:

答案 0 :(得分:1)

'10'不是一个字符,它是两个字符,这是不允许的。如果您想存储号码,则不应使用'字符:

case 8:
   cout <<"straight\n";break;
case 10:
   ...

相反,您应该将输入读作类型int

答案 1 :(得分:0)

不要在数字周围使用引号。

答案 2 :(得分:0)

char通常不被视为数字,当然不是从流中读取。此外,在打开数字时,请勿使用字符文字:

请参阅已评论的更改(未经测试):

#include <iostream>

using namespace std;

int main()
{
int number; // char isn't a number in this use case, use int
cout << "Enter a number. ";
cin >> number;
switch(number)
{
case 2: // not character literals
cout << "shoe\n";break;
case 4:
cout <<"door\n";break;
case 6:
cout <<"sticks\n";break;
case 8:
cout <<"straight\n";break;
case 10: // '10' is an illegal character literal, as its 2 characters
cout <<"big fat hen\n";break;
default:
cout << "Not much into kids' rhymes, ar you?\n" << endl;
}   
}                     
相关问题