Vic*_*ard 4 c++ dev-c++ switch-statement
我正在研究一个石头剪刀程序,但这次计算机选择摇滚一半时间,剪刀三分之一时间,纸张只有六分之一时间.我这样做的方式是我列举了六种可能的计算机选择值:
enum choicec {rock1, rock2, rock3, scissors1, scissors2, paper};
choicec computer;
Run Code Online (Sandbox Code Playgroud)
但是,在计算机做出选择之后,我必须将这些枚举值转换为摇滚,纸张或剪刀.我使用switch-case语句做到了这一点:
switch(computer) {
case rock1 || rock2 || rock3:
c = 1;
break;
case scissors1 || scissors2: //ERROR!
c = 3;
break;
case paper:
c = 2;
break;
}
Run Code Online (Sandbox Code Playgroud)
一个是摇滚,两个是纸,三个是剪刀.但是,在我作为注释写入错误的行上,它给了我这个错误:[错误]重复的案例值.
我不知道为什么.有任何想法吗?
你不能||在case分支机构中使用.对不起:(
当你使用||它的逻辑或在他们身上,上面写着"是rock1或rock2或rock3不是零?"答案是肯定的,那些至少一个不为零,所以rock1 || rock2 || rock3就是true,这是1,而且scissors1 || scissors也true,那是1.所以你有两个case分支机构1.
您应该只使用casefallthrough来选择多个条件:
switch(computer) {
case rock1: case rock2: case rock3:
c = 1;
break;
case scissors1: case scissors2:
c = 3;
break;
case paper:
c = 2;
break;
default:
std::cerr << "INVALID COMPUTER MOVE";
}
Run Code Online (Sandbox Code Playgroud)
另外,我的case开关总是有一个默认值.有时会发生错误,我们肯定想知道它是否没有遇到任何案例分支.我对于缺少else陈述也很偏执,但是如果没有陈述,大约有一半的时间是可以的else.
我不确定您在做什么,但switch语句应如下所示
switch(computer)
{
case rock1:
case rock2:
case rock3:
c = 1;
break;
case scissors1:
case scissors2:
c = 3;
break;
case paper:
c = 2;
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24010 次 |
| 最近记录: |