C++ "Case label value exceed maximum value for type"

标签 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;
}   
}                                   

最佳答案

'10' 不是一个字符,是两个字符,这是不允许的。如果你想存储数字,你不应该使用 ' 字符:

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

相反,您应该将输入读取为 int 类型。

关于C++ "Case label value exceed maximum value for type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19128589/

相关文章:

c++ - v8 的替代方案,用于将 C++ 对象暴露给 JavaScript(在 PowerPC 上)

c++ - 多屏幕/窗口 QT QML C++ 应用程序

c++ - 带有 C++ 解决方案的 C 库

c++ - 多次使用 Promise

c++ - Tan 函数在 C++ 中不起作用?

c++ - 条件检查 : if(x==0) vs. if(!x)

c# - 扫描图像 OpenCV 上的文档检测

c++ - 使用代码 :Blocks on Linux 的 C++ 函数中的 "Not Declared in scope"

c++ - 在带有 std::greater 附加参数的 std::map 上使用三元运算符

c++ - 在曲面中插入边 - CGAL 错误 : assertion violation