“ opt”不能出现在常量表达式中

时间:2019-01-04 13:03:53

标签: c++ switch-statement

在以下C ++程序中:

int opt;
in(opt);
switch(opt)
 case(opt == 1):
 //and so on…

其中in(opt);是用于获取整数opt值的过程。

我在这里收到错误:case(opt == 1):

基本上,关键是我想为用户提供一种方法来决定将使用该程序的哪些功能。我也尝试过 char ,但是也没有运气。我只是不知道发生了什么。

2 个答案:

答案 0 :(得分:2)

case块中的switch标签需要是可在编译时评估的常量表达式(和整数类型)。

由于opt == 1仅在运行时才知道,因此case (opt == 1)的编译将失败。

您的意思仅仅是case 1:吗?

答案 1 :(得分:2)

switch(opt) {
    case 1:
        break;
    case 2:
        break;
}

switch部分表示您正在查看opt的值;每个case语句都给出一个可能的匹配值。 case语句中的值必须是编译时常量。