C - 棘手的开关盒工作..!

2024-03-24

Folks,

最近开始学习C。
卡在一个点上。它是关于 switch-case 语句的工作。

这是代码:

#include<stdio.h>

int main() {
        int i=4;
        switch(i) {

                default :       
                        printf("%s","Default");
                case 0:         
                        printf("%s","Case 0");
                case 1:         
                        printf("%s","Case 1");
                case 2:         
                        printf("%s","Case 2");

        return 0;
        }
 }  

我个人认为,“Default" 应该被打印,因为它与任何大小写值都不匹配。
但是当我在 Turbo C 中运行代码时,我观察到的是:

Default
Case 0
Case 1
Case 2  

甚至在这里也观察到了同样的情况:http://www.ideone.com/pFh1d http://www.ideone.com/pFh1d

问题是什么 ?这是编译器问题还是我的代码有错误?


EDIT :

PS:如果我必须先写默认情况,那有什么问题呢?有什么害处吗?

但是一旦编译器知道它必须执行default语句,为什么我们需要在default case语句后面放置一个break语句呢?


switch语句会跳转到相应的位置case or default然后代码将继续直到下一个break陈述。

由于您的代码没有break它将开始于default:并继续执行以下所有陈述。在编写类似条件时,有时这可能是一个有用的技巧,但通常缺少break语句会导致混乱。

还有决赛return位置错误,应该在 switch 语句之后。

修改如下。

        int i=4;
        switch(i) {

                default :       
                        printf("%s","Default");
                        break;
                case 0:         
                        printf("%s","Case 0");
                        break;
                case 1:         
                        printf("%s","Case 1");
                        break;
                case 2:         
                        printf("%s","Case 2");
                        break;

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

C - 棘手的开关盒工作..! 的相关文章

  • SharpZipLib - 将文件夹/目录添加到 zip 存档

    通过示例 我很好地掌握了如何提取 zip 文件 几乎在每个示例中 识别 ZipEntry 是否为目录的方法如下 string directoryName Path GetDirectoryName theEntry Name string
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • 键盘加速器在 UWP 应用中停止工作

    我正在尝试将键盘加速器添加到 UWP 应用程序中的 CommandBar 菜单项 当应用程序启动时 这工作正常 但在我第一次打开溢出菜单后 加速器停止工作 这似乎不会发生在主要命令 菜单之外 上 只有溢出菜单内的辅助命令才会发生 此外 单击
  • 在Application_AquireRequestState事件中用POST数据重写Url

    我有一个在其中注册路线的代码Application AcquireRequestState应用程序的事件 注册路由后 我会在 Http 运行时缓存中设置一个标志 这样我就不会再次执行路由注册代码 在此事件中注册路线有特定原因Applicat
  • 访问“if”语句之外的变量

    我怎样才能使insuranceCost以外可用if陈述 if this comboBox5 Text Third Party Fire and Theft double insuranceCost 1 在 if 语句之外定义它 double
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 从 future 中检索值时的 SIGABRT

    我在使用 C 11 future 时遇到问题 当我打电话时wait or get 关于返回的未来std async 程序接收从mutex标头 可能是什么问题呢 如何修复它 我在 Linux 上使用 g 4 6 将以下代码粘贴到 ideone
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • 如何在 Asp.net Gridview 列中添加复选框单击事件

    我在 asp 中有一个 gridview 其中我添加了第一列作为复选框列 现在我想选择此列并获取该行的 id 值 但我不知道该怎么做 这是我的 Aspx 代码
  • 存储过程上的 OdbcCommand - 输出参数上出现“未提供参数”错误

    我正在尝试执行存储过程 通过 ODBC 驱动程序针对 SQL Server 2005 但收到以下错误 过程或函数 GetNodeID 需要参数 ID 但未提供该参数 ID 是我的过程的 OUTPUT 参数 在存储过程中指定了一个输入 mac
  • 单线程公寓问题

    从我的主窗体中 我调用以下命令来打开一个新窗体 MyForm sth new MyForm sth show 一切都很好 但是这个表单有一个组合框 当我将其 AutoCompleteMode 切换为建议和追加时 我在显示表单时遇到了这个异常
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 您可以在一个 Windows Azure 实例上部署多个 Web 应用程序吗?

    是否可以在一个 windows azure 小型计算实例中运行一堆 Web 应用程序 我正在考虑使用 Azure 作为放置一堆处于开发和非生产状态的项目 Web 应用程序 的地方 有些实际上已经被封存了 但我想在某个地方有一个活跃的实例 我
  • 特征密集稀疏矩阵乘积是线程化的吗?

    我知道稀疏密集产品是根据文档进行线程化的 https eigen tuxfamily org dox TopicMultiThreading html https eigen tuxfamily org dox TopicMultiThre
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255

随机推荐

  • 如何在 Fluent NHibernate 中将“级联删除”选项设置为“设置空”?

    我是 Fluent nHibernate 的新手 想知道 如果我有两个类 Profile 和 Email 一对多映射 如下所示 我想流畅地定义一个 nHibernate 映射 这样当 Profile 被删除时 Email 将保留在DB 键设
  • 从 Android 加速度计获取倾斜角度

    我有一个实现的类SensorEventListener我想得到 这tilt Angle我的设备使用Accelerometer 我在互联网上寻找示例 但他们使用Sensor TYPE MAGNETIC FIELD 我相信我的设备没有这个传感器
  • 我解释 DI 和 IoC 的方式有什么问题?

    昨天在一次采访中我被问到春季的 DI 和 IoC 是什么 我的回复是 when a class A 延伸摘要class B 或实施interface B 或创建一个对象class B 其中任何一个类 那么A据说是 依赖于B 注入这个依赖关系
  • winforms:使用parallel.foreach更新进度

    我没有看到任何与我的问题相关的帖子 因此 如果我发布已经提出的问题 我深表歉意 我有一个 Windows 窗体程序 C 用于检查股票并进行分析 主窗体通过新线程和 ShowDialog 启动另一个窗体 当它加载时 它正在运行parallel
  • Spring ThreadPoolTask​​Executor 的工作原理

    我一直在阅读 Spring 的 ThreadPoolTask Executor 的设置如何协同工作以及线程池和队列如何工作 This https stackoverflow com a 43874563 10727434stackoverf
  • 如何在 swift 中向我的 cocoa 应用程序添加设置?

    我对 Swift 编程还很陌生 我想知道是否有一种简单的方法可以在 Swift 中向我的 Cocoa 应用程序添加设置 首选项 如果可能的话 我想要一份分步指南 我主要想知道如何将用户的首选项存储在磁盘和代码部分上 在我当前的代码中 它将需
  • .NET 多个类库合二为一

    我在VS2008中工作 我有一个自定义类库 CL1 它引用另一个自定义类库 CL2 最终我的发布文件夹中包含了 CL1 和 CL2 现在 CL1 的使用者需要在项目中包含两个 dll 我认为这是不合适的 我强烈地感觉到必须有一种方法来实现单
  • 在用户接受同意之前暂时禁用 Firebase 的所有服务

    我有一个实施了 Firebase 的应用程序 我想要的是在用户接受数据收集同意之前禁用与 Firebase 相关的所有内容 在 android 文档中 我看到 例如 我可以使用以下方法禁用 Firebase Analytics setAna
  • 该字段泄漏上下文对象

    我在非 Activity 中使用 Context 对象 它工作正常 但问题是它显示警告 That is where I am using the context object Here is the result of inspection
  • 如何在 JDBC url 中正确传递会话变量?

    我必须增加group concat max len 我无法通过preparestatement 做到这一点 而且我也无法在mysql my conf 文件中做到这一点 我在 mysql 文档中发现有一个选项可以在 url 中传递会话变量 但
  • Python argparse 字典 arg

    我想收到一个dict str gt str 来自命令行的参数 做argparse ArgumentParser提供吗 或者还有其他图书馆吗 对于命令行 program py dict d key key1 value val1 key ke
  • 为什么

    编辑 另请参阅下面我自己的答案 2016 例如 ul li class first a href title Home a li li a href title Chi siamo a ul li a href title item1 a
  • 动态调用DLL中的方法

    我有一个包含一些方法 显示 隐藏和验证 的 DLL 这是其中一种方法的示例hide Panel paneldynamic String id List
  • Angular - routerLink 和状态问题

    我想使用 routerLink 和状态从 html 页面路由到另一个页面 使用标签没有问题 在登陆页面的 ngOnInit 期间 我可以按预期检索状态 使用标签主页也可以导航 但状态结果未定义 我有什么错吗 登录页面的html
  • 无法加载此类文件--2.2/gherkin_lexer_en,如何修复?

    我需要一点帮助 我该如何解决这个问题 当我打电话时cucumber我收到以下错误 WARNING You must use ANSICON 1 31 or higher https github com adoxa ansic on to
  • 目前仅在 PRIMARY KEY 的聚集列上支持排序依据

    卡桑德拉2 0 7 cql 3 1 1 CREATE TABLE playlists id uuid song order int song id uuid title text album text artist text PRIMARY
  • 如何为 has_many_polymorphs 和错误设置这些 CRUD 控制器操作

    我正在使用有很多多态性 https github com fauna has many polymorphs插件 以便可以将视频 主题和用户发布到个人资料中 因此 一个个人资料有很多 showable objects 可以是视频 主题和用户
  • 使用 microsoft graph c# asp.net 将新文件上传到 onedrive

    尝试将尚不存在的文件上传到 onedrive 我已经设法让它更新现有文件 但似乎无法弄清楚如何创建一个全新的文件 我已经使用以下方法完成了此操作Microsoft Graph图书馆 以下是用于更新现有文件的代码 public async T
  • 清除 Thread.interrupt() 标志的方法

    我最近继承了一个大型Java应用程序 其中几乎没有线程安全性 我目前正在研究的是让所有线程正确处理被中断的情况 而不是使用非常糟糕的线程Thread stop 部分问题是我不知道清除中断标志的每个方法调用 目前我知道以下内容将清除中断标志
  • C - 棘手的开关盒工作..!

    Folks 最近开始学习C 卡在一个点上 它是关于 switch case 语句的工作 这是代码 include