【问题标题】:Why can't I use || OR Operator in C++ Switch statement? [closed]为什么我不能使用 || C ++ Switch语句中的OR运算符? [关闭]
【发布时间】:2019-05-31 03:27:44
【问题描述】:

多年来我一直在使用 VB.NET,我喜欢这种语言。现在将自己分散到 C++ 中,我很难掌握 C++ 的逻辑。

请告诉我任何解决方法。非常感谢!

【问题讨论】:

  • 这没有意义..你想如何在switch中使用||
  • 这个问题似乎离题了,因为它只是一个咆哮,而不是用他尝试过的一些代码示例来详细说明用户真正想要做什么
  • 你在尝试switch(x) { case 0: case 1: /*this is an or */ break; case 3: break; } 吗?
  • @MarounMaroun: case 42: if( a || b ) { ... ? ^^
  • 你的问题没有意义,请重新措辞,不要因为看不懂就对语言进行主观评价,如“C++逻辑不合理”。

标签: c++ syntax


【解决方案1】:

这是一个非常不清楚的问题,但您可能会问为什么不能这样做:

switch(mynumber) { //assuming an int here
  case 1:
    printf("Something.");
    break;
  case 2 || 3: 
    printf("Something else.");
    break;
 }

这不会像你预期的那样工作:|| C++ 中的运算符实际上将执行2 || 3,计算结果为1。相反,您可以复制您的案例陈述:

switch(mynumber) {
  case 1:
    printf("Something.");
    break;
  case 2: 
  case 3: 
    printf("Something else.");
    break;
 }

【讨论】:

    【解决方案2】:

    看起来 VB.NET 支持 case 语句中的表达式,而 C++ 不支持。

    【讨论】:

    • 这实际上回答了问题:)
    • 我不确定。它确实支持 case 标签中的表达式:#include <stdio.h> int main() { const bool y = false, z = true; switch (42) { case 41+(y||z): printf("42\n"); } return 0; } - 它们只需要是编译时常量。
    猜你喜欢
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2011-01-10
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多