Switch-Case:声明初始化和声明然后赋值

2023-11-23

在 switch-case 语句中声明与初始化无效但是声明然后赋值被允许。如下面的代码片段所示。

从编译器方面来看,这两种类型的初始化有什么区别?为什么第一种类型的初始化无效而第二种类型的初始化有效。

switch(val)  
{  
case 0:  
  int newVal = 42;  //Invalid
  break;
case 1:  
  int newVal2;      //Valid
  newVal2 = 42;  
  break;
case 2:
  break;
}

实际上,规则是您不能跳入经过具有初始化的声明(或经过非 POD 类型变量的声明)的块。 C++ 标准规定 (C++03 §6.7):

It is possible to transfer into a block, but not in a way that bypasses declarations with initialization. A program that jumps(77) from a point where a local variable with automatic storage duration is not in scope to a point where it is in scope is ill-formed unless the variable has POD type (3.9) and is declared without an initializer (8.5).

(*) The transfer from the condition of a switch statement to a case label is considered a jump in this respect.

int newVal = 42;是一个具有初始值设定项的声明(= 42部分)。该程序格式错误,因为如果val is 1 or 2,您将跳入初始化后的 switch 块。

int newVal2;也是一个声明;因为int是 POD 类型并且声明没有初始化程序,您可以跳过此声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Switch-Case:声明初始化和声明然后赋值 的相关文章

  • C# SmtpClient编程中如何设置带有中文的附件文件名?

    我的代码如下 ContentType ct new ContentType ct MediaType MediaTypeNames Application Octet ct Name 这是一个很长的中文文件名希望能用它在附件名中 Doc A
  • 使用 ADAL v3 使用 ClientID 对 Dynamics 365 进行身份验证

    我正在尝试对我们的在线 Dynamics CRM 进行身份验证以使用可用的 API 我能找到的唯一关于执行此操作的官方文档是 https learn microsoft com en us dynamics365 customer enga
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 如果将变量设置为等于新对象,旧对象会发生什么?

    假设我们有一个 X 类not有一个超载的operator 功能 class X int n X n 0 X int n n n int main X a 1 an object gets constructed here more code
  • winform c# 中的弹出窗口

    我正在开发一个需要弹出窗口的项目 但问题是我还希望能够通过表单设计器在此弹出窗口中添加文本框等 所以基本上我有一个按钮 当您单击它时 它将打开我在表单设计器中设计的另一个窗口 我一直在谷歌搜索 但还没有找到我需要的东西 所以我希望你们能帮助
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 如何为有时异步的操作创建和实现接口

    假设我有数百个类 它们使用 计算 方法实现公共接口 一些类将执行异步 例如读取文件 而实现相同接口的其他类将执行同步代码 例如将两个数字相加 为了维护和性能 对此进行编码的好方法是什么 到目前为止我读到的帖子总是建议将异步 等待方法冒泡给调

随机推荐

  • CGRect 和 CGPath 的交集

    有没有一种有效的方法来检测 CGPath 和 CGRect 是否相交 我考虑过循环遍历 CGRect 内的每个点 如下所示 for CGPoint point in rect if CGPathContainsPoint path nil
  • C# 5 的“即发即忘”中的异常处理(在 .net 4.5 中)

    考虑以下 一劳永逸 用例 调用者从我的方法请求一些数据 我的方法检查缓存以查看数据是否已经存在 如果不是 它会从源中获取并缓存它 调用者在获取结果之前不需要等待缓存发生 并且如果缓存失败 该方法不应阻止调用者获取结果 我今天所拥有的 看起来
  • 为什么我的 Python 代码为列表中的所有元素提取相同的数据?

    My project consists of making a competitive watch table for hotel rates for an agency It is a painful action that I want
  • 如何查找给定列是否存在唯一键约束

    我正在编写一个 perl 脚本 我需要在其中运行更新查询 但我需要检查 update sql 命令是否不违反唯一键约束 所以如果我有一张桌子tb C1 C2 C3 我的更新查询如下 update tb set C1 b1 where C2
  • 如何在HTML中正确引用本地资源?

    事实证明 引用本地资源可能是一些人的摩擦点 我正在寻找本地资源引用的规范答案及其含义 拿这些例子来说 这些参考路径有什么区别呢 img src myfile png 没有前导斜杠 img src myfile png 带有前导斜杠 img
  • 为什么 n+++n 有效而 n++++n 无效?

    在Java中 表达式 n n 似乎评估相当于 n n 尽管事实上 n是一个有效的一元运算符 其优先级高于算术运算符 运算符在n n 因此编译器似乎假设该运算符不能是一元运算符并解析该表达式 然而 表达式 n n 无法编译 即使有一个有效的可
  • Facebook在iOS6.0中使用SLRequest上传照片无论如何失败

    这是我的 Objc 代码 ACAccountStore facebookaccount ACAccountStore alloc init ACAccountType facebookaccountType facebookaccount
  • 电子邮件附件

    我希望能够附加我生成的文件 即时 我不想将文件保存在我的服务器上 并通过电子邮件发送出去 我已完成所有文本 但不知道如何使用 sendmail 将文件附加到电子邮件 谢谢 See http railscasts com episodes 2
  • Android: onPause() 是否保证在 finish() 之后调用?

    在任何地方都找不到对此问题的可靠答案 我有一个方法 其中调用 finish 然后调用 onPause onPause 是否保证在调用 finish 后被调用 Android一般会调用onPause 如果你打电话finish 在您的 Acti
  • SSL:使用 Python3 的 CERTIFICATE_VERIFY_FAILED

    如果这是一个愚蠢的问题 我深表歉意 但我一直在尝试自学如何使用 BeautifulSoup 以便我可以创建一些项目 我按照此链接作为教程 https www youtube com watch v 5GzVNi0oTxQ 在遵循与他完全相同
  • Android 进程内存使用与电池消耗之间的相关性

    我终于找到了一种获取各个进程的 TotalPss 的方法 现在我关心的是 如何找到每个android进程的电池消耗 如果没有直接的方法找到它 每个进程的内存使用量和电池消耗之间是否有任何相关性 我可以为此研究任何研究论文吗 是的 内存使用量
  • VBScript 内存不足错误

    我有一个由第三方公司构建的经典 ASP CRM 目前 我可以访问源代码并能够进行所需的任何更改 一天中 通常是在用户长时间使用之后 我的大多数页面都会随机出现内存不足错误 应用程序的构建方式是所有页面和脚本都从 Global asp 文件中
  • 为什么服务器重置 TCP 后用户代理会重新提交请求?

    我们最近注意到一个问题 即某些用户代理会重复相同的 POST 请求 而用户实际上并没有实际触发它两次 经过进一步研究 我们注意到只有当请求通过负载均衡器并且服务器花了很长时间来处理请求时才会发生这种情况 数据包捕获会话最终显示负载均衡器在
  • 是否有针对受最大宽度或最大高度约束的 IMG 的 CSS 选择器?

    如果我定义以下 CSS 规则 img max width 200px max height 200px border 1px solid black 是否有一种纯 CSS 方法来检测那些在没有尺寸限制的情况下会更大的图像对象 语义上匹配的东
  • 是否可以使用结构化绑定来分配类成员?

    我想使用 C 17 结构化绑定为类成员变量赋值 如下所示 include
  • 使用 Python 从 HTML 文件中提取文本

    我想使用 Python 从 HTML 文件中提取文本 如果我从浏览器复制文本并将其粘贴到记事本中 我想要的输出基本上与我得到的输出相同 我想要比使用正则表达式更强大的东西 因为正则表达式可能会在格式不良的 HTML 上失败 我看到很多人推荐
  • 我们如何将 UISplitVIewController 推送到 UINavigationController

    是否可以将 SplitViewController 推送到导航控制器上 我收到此错误 Split View Controllers cannot be pushed to a Navigation Controller
  • 如何在 MySQL 数据库中存储 Emoji 字符

    我有一个配置了默认排序规则的 MySQL 数据库utf8mb4 general ci 当我尝试使用以下查询在文本中插入包含表情符号字符的行时 insert into tablename column1 column2 column3 col
  • Javascript 减少陷阱 - 跳过第一次迭代?

    为什么javascript的reduce实现在第一次迭代时会跳过执行 1 2 3 reduce acc val gt console log acc acc console log val val return acc val acc 1
  • Switch-Case:声明初始化和声明然后赋值

    在 switch case 语句中声明与初始化无效但是声明然后赋值被允许 如下面的代码片段所示 从编译器方面来看 这两种类型的初始化有什么区别 为什么第一种类型的初始化无效而第二种类型的初始化有效 switch val case 0 int