0

所以我有这个类的分配,我需要使用 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;
}   
}                                   
4

3 回答 3

1

'10'不是一个字符,是两个字符,这是不允许的。如果要存储数字,则不应使用以下'字符:

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

相反,您可能应该将 input 读取为 type int

于 2013-10-02T01:27:11.933 回答
0

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

于 2013-10-02T01:26:47.223 回答
0

Achar通常不被视为数字,在从流中读取时当然也不会。此外,在打开数字时,不要使用字符文字:

请参阅注释更改(未测试):

#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;
}   
}                     
于 2013-10-02T01:34:26.450 回答