请查看此代码:
char o,t; cin >> o >> t;
switch (o,t)
{
case 's','g': cout << "Finish"; break;
default: cout << "Nothing";
}
你可以看到switch设置为两个值,但是如果命令我不能同时检查它们。我该怎么办?有什么办法吗?
答案 0 :(得分:5)
这不是正确的语法使用
case 's':
case 'g':
cout << "Finish"; break;
答案 1 :(得分:4)
在C ++中,您不能switch
多个值。
switch (o,t)
使用逗号运算符(它看起来很像其他语言中的一对,但它不是。)
逗号运算符计算其左操作数(o
),忽略该值的值,然后返回其右操作数(t
)的值。
换句话说,您的switch
仅查看t
。
没有办法解决这个问题。
您的具体案例最好写成
if (o == 's' && t == 'g')
{
cout << "Finish";
}
else
{
cout << "Nothing";
}
答案 2 :(得分:3)
您无法同时切换两个表达式。开关部分只是编译,因为有一个逗号运算符(它只是计算第二个值,在本例中为t
)。
使用普通的旧if
语句。
答案 3 :(得分:2)
char o,t; cin >> o >> t;
switch (o,t)
{
case 's':
case 'g': cout << "Finish"; break;
default: cout << "Nothing";
}
在找到匹配的情况下的开关中,执行之后的所有操作员。这就是为什么你应该在break;
之后编写case
运算符来退出开关。因此,如果你想在几种情况下做同样的事情,你应该一个接一个地把它们放在一起。
答案 4 :(得分:0)
您有一些语法错误,正确的代码是
char o,t; cin >> o >> t;
switch (o)
{
case 's':case 'g': cout << "Finish"; break;
default: cout << "Nothing";
}
switch (t)
{
case 's':case 'g': cout << "Finish"; break;
default: cout << "Nothing";
}