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