【问题标题】:c++ define variable inside switch statement - defining with/without initializing [duplicate]c ++在switch语句中定义变量-定义有/没有初始化[重复]
【发布时间】:2016-08-05 06:18:25
【问题描述】:

我知道很多关于这个主题的stackoverflow问题,但我没有找到这个问题的答案。

struct message
{
    int  myint;
};

int main(void)
{
  switch(1)
  {
    case 0:
      break;
    case 1:
      int i; // this is fine, but int i = 10; is compile error
      break;
    default:
      break;
  }
  return 0;
}

从逻辑上讲,为什么定义变量并用某个值对其进行初始化与仅仅为“案例标签”定义变量不同?

【问题讨论】:

  • 右侧相关栏目第二个问题:stackoverflow.com/questions/92396/…
  • @chris,有趣的帖子。顺便说一句,它回答了为什么简单的int i; 有效吗?我阅读了前几个高投票的答案,但找不到明确的解释。
  • @iammilind,是的,因为没有跳过初始化。 This answer 对此进行了更多说明。
  • 你的this answer 就是我要找的东西

标签: c++ c switch-statement


【解决方案1】:

要在 C++ 中的 switch 语句中定义变量,您需要使用大括号:

int main(void)
{
  switch(1)
  {
    case 0:
      break;
    case 1:
    {  //added brace
      int i=10;
      break;
    }  //added brace
    default:
      break;
  }
  return 0;
}

here the link to C++ shell

【讨论】:

  • 我知道它有效,但这不是我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-29
  • 2014-01-13
  • 2021-08-11
  • 2019-04-28
  • 2015-04-21
  • 1970-01-01
相关资源
最近更新 更多