首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我删除c= getchar()部分时,为什么默认语句在case之后工作?

当你删除了c = getchar()部分时,程序将无法获取用户输入的字符,而是直接执行后续的代码。在这种情况下,默认语句会在case之后工作,是因为没有输入字符被匹配到任何一个case语句中,所以程序会执行默认语句。

在C语言中,switch语句是根据表达式的值来选择执行的分支。当表达式的值与某个case语句的值相等时,程序会执行该case语句后的代码。如果没有任何一个case语句的值与表达式的值相等,程序会执行默认语句(如果有的话)。

在你删除了c = getchar()部分的情况下,switch语句的表达式没有被赋值,所以无法匹配到任何一个case语句。因此,默认语句会被执行。

需要注意的是,如果你删除了c = getchar()部分,程序将无法获取用户输入的字符,可能导致程序无法按照预期工作。如果你想要程序根据用户输入的字符执行相应的代码,你需要保留c = getchar()或者使用其他方式获取用户输入的字符。

关于C语言中的switch语句的更多信息,你可以参考腾讯云的C语言开发文档:C语言开发文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C语言】题集 of ⑤

C语言可以使用 [switch] 语句直接处理多分支选择的情况,将我们程序代码的可读性提高! [switch]语句是多分支选择语句我们程序代码中,如果我们觉得用的分支语句较多的时候。...… case 常量表达式 n: 语句 n; default : 默认情况语句块; } 计算表达式当中的值,并且逐个与常量表达式进行比较。...继续执行后面所有的[case]语句,如表达式的值没有一个和[case]当中的常量表达式相等的时候,则执行[default]默认情况语句块。...程序实现:while ((ch = getchar()) != '\n'); 读取完毕之后,我们再用getchar()输入函数输入①个单个字符。 然后,用判断输入 Y 是确认成功,N 是确认失败。...= '\n');//搭建while循环直到把缓冲区的'\n'读取完毕 printf("请确认密码(Y/N):"); ret = getchar();//读取完毕之后,再进行getchar()的一个输入

57830

C语言】getchar 函数的正确使用

目录 一、getchar 函数 二、缓冲区 1、什么是缓冲区 2、为什么要存在缓冲区 3、缓冲区的类型 4、缓冲区的刷新 三、getchar 函数的正确使用 1、getchar 的换行问题...---- 2、为什么要存在缓冲区 我们为什么要引入缓冲区呢?...,当我们用getchar读取字符时,会从缓冲区中依次逐个读取所有的字符(包括换行、空格、Tab),直到缓冲区中没有数据,每读取一个字符就用putchar打印一下,所以这里会自动换行。...所以说,法一只能解决一分情况,想要彻底解决scanf缓冲区残留的问题需要用到法二。 ---- 法二:scanf后面加 while( getchar() !...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除

1.4K50
  • C语言总集篇】分支与循环篇——从不会到会的过程

    ("工作日"); break; case 2: printf("工作日"); break; case 3: printf("工作日"); break; case 4: printf...("工作日"); break; case 5: printf("工作日"); break; case 6: printf("休息日"); break; case 7: printf...break; } return 0; } 简化之后代码就简洁了很多,此时代码的含义就变成了判断aa为1~5的情况下打印工作日,a为6~7的情况下打印休息日,那现在的问题来了,这样编写它能够正常运行吗...接下来我们来对这一分内容做个小结: switch语句中switch的判断条件是整型表达式,case的分支条件是整型常量表达式; 多分支语句中switch语句比if语句要更简洁; 转向语句break...for语句 1.for循环的语句结构 开始for循环之前,我们先来探讨一个问题,为什么C语言中已经有while循环了,还要加入for循环呢?

    35010

    抽丝剥茧C语言(中阶)分支语句和循环语句

    分支语句(选择结构) 举个简答的例子,你进入了大学,好好学习毕业之后就能有一份好的工作,不学习毕业就等于失业,如果你说你家里有80套房子,20个厂子,5个大公司,OK,你随意。...其实并不是,C语言里,else是和它离的最近的if 匹配的。 也就是说,这里的else和表达式为b == 2的if 语句是一对。...我们无论是用scanf还是getchar输入字符的时候,都会有一个缓冲区,缓冲区里面是存放键盘上的字符的内存,我们使用scanf和getchar时,它们回去缓冲区看是否有字符可以读取,比如说我们输入...代码2:这里打印了100个hehe,for进行嵌套,进入第一个for循环中之后,执行里面的for,里面的for又进行循环。 代码3:这段代码我们只打印了10个hehe,为什么呢?...这里C语言的分支与循环语句的就讲完了,当然只是知识点和一些例子是不够的,我之后还会出一期分支与循环的练习,我们将会完成一些有趣的代码,比如猜数字游戏,代码关机等等。

    1.7K00

    c语言getchar()的用法_c=getchar()

    程序中 while 循环工作时,每一次循环 getchar() 就会从输入缓冲区读取一个字符,然后 putchar 输出,直到遇到了文件结束标志 EOF,循环判断条件为假,循环才结束 为啥用缓冲区呢?...\n"); } return 0; } 运行结果: 输入密码 123456 之后,程序没有让我们确认密码,直接判断确认失败了,为什么会出现这样的结果呢?...当我键盘上输入密码并按下回车后,键盘缓冲区有 ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ ‘\n’ 这些字符,此时 scanf 函数开始读取字符串 ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’...那我们怎么改进,让字符 ‘Y’ 或者 ‘N’ 得以被接收呢,猜你已经想到了,那就是 ch = getchar(); 语句前面增加一条 getchar(); 语句,来读取处理掉 ‘\n’ ,这样用来确认密码的那个...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除

    4.5K50

    C语言代码优化的一些经验及小技巧(一)

    这里注意新版本函数只有我们知道输入的count结余0至59时能正确的工作。...五、懒检测开发 if(a>10 && b=4)这样的语句中,确保AND表达式的第一分最可能较快的给出结果(或者最早、最快计算),这样第二分便有可能不需要执行。...1: dostuff1(); break; case 2: dostuff2(); break; case 3: dostuff3(); break; } if()语句中,如果最后一条语句命中...回顾上例,C标准库函数的设计者为什么要将getchar声明为令人迷糊的int类型呢? 正常情况下,getchar的确返回单个字符。...我们实际工作中,经常会碰到上述令人为难的问题。为了避免出现误解,我们应该将正常值和错误标志分开。即:正常值用输出参数获得,而错误标志用return语句返回。

    1K32

    C语言 getchar()原理及易错点解析

    .getchar()系列 1.getchar()工作原理及作用 工作原理:getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了...这是为什么?? 原因: 其实在我们第一次输入并按下回车的时候,控制台一共获得了四个字符,分别是:a、b、c、回车(enter)。...char is :%c\n",n);//输出用户输入的第二个字符 return 0; } Output: 由此可见,当我们第一次输入ab空格+回车后,程序正常运行。...我们需要删除scanf()函数留在缓存中的换行符即可。 if语句中使用一个break语句,可以scanf()的返回值不等于2时终止程序,即如果一个或两个输入值不是整数或者遇到文件结尾就终止程序。...character为什么为空白?? 原因: 如果格式是%c,那么任何字符都是它想要的,所以第二个程序中的第二个scanf(“%c”)会得到‘+’后面的空格’ ‘。

    1.4K60

    认识初始化

    该对象实现的功能有C风格的字符串初始化、C风格的字符串的赋值和输出的功能。 对于对象来说,初始化语句的语法形式与赋值不同。...C++中,基本类型的变量也可以当做对象来处理,因此基本类型的变量可以采用类似默认构造函数的形式进行初始化。例如int i(2);和double d(2.5);等。...所以,很多编译器(如GCC)下,以上程序如法通过编译,但在VC++中,程序能够通过编译,但运行结果没有任何意义。所以,如果要生成常对象,必须显示定义其对应的构造函数,完成对象的初始化工作。...由于C++没有强制switch语句的各case分支使用break,所以一个case分支中定义的变量是可能被其他分支的语句使用的。由于case分支被执行的随机性,无法保证变量获得初值。...解决办法: (1)除非只有一个case分支,否则不要在case分支中定义局部变量; (2)可以将case分支至于代码块中,用大括号包围,限制case分支定义的变量的作用域代码块作用域中。

    1.2K10

    C语言初阶篇】scanf和getchar中缓存区的概念!

    文章目录 前言 getchar( )的用法讲解 getchar()的参数 getchar()的返回值 为什么getchar的返回值是个整形int而不是char getchar( )实例应用: scanf...各位宝子们大家好啊,相信大家都多多少少了用过scanf和getchar()语句吧,但是关于缓存区的概念,我相信大多数人都没有听说过吧。...getchar( )的用法讲解 getchar() 用来获取一个字符的 C++官方是这样描述的 getchar()的参数 这里我们可以看到 getchar() 的参数是 void 空类型...为什么getchar的返回值是个整形int而不是char ⛳️ 前面我们说了,当getchar()读取错误时返回的是EOF 而 EOFC语言中被定义为-1,而-1是字符char是存储不下的 扩展...scanf和getchar函数和键盘之间有一个键盘缓冲区 键盘输入之后把数据放到缓冲区然后再进行读取 scanf 演示 说明:当我们缓存区如上图时什么都没有scanf( )函数就会等待 运行错误的原因

    27810

    c语言每日一练(15)

    第四次b为11,第五次b为13,而a+c始终为3,所以最后打印的结果为3+5 3+7 3+9 3+11 3+13 =8 10 12 14 16选D 3、关于if语句说法正确是( ) A、if语句后面只能跟一条语句...B、if语句中0表示假,1表示真,其他无意义 C、if语句时一种分支语句,可以实现单分支,也可以实现多分支 D、else语句总是和它的对其的if语句匹配 解析:A选项错误,if后面可以根很多条语句...B选项错误,太片面了,c语言中非0的语句均为真。C选项正确,else if就是多分支。D选项错误,没有括号的情况默认和最近的匹配。...,这道题就是这样,它的case语句中均没有break,那么它就会顺着走下去,一直走到最后的b=0,所以最后返回的值也是0,选D 5、程序运行的结果为() #include int...22 D、死循环 解析:观察代码可以发现主体部分是个循环,目标是打印出a的值,而a的值只会在循环结束时才会++,那么不难看出,完整进行循环的次数+1(为什么+1,因为跳出循环前a先++之后才执行

    20710

    【数据结构】C语言实现共享栈

    今天的内容中我们将来详细介绍一下应该如何通过C语言来实现共享栈; 一、共享栈 为了解决栈溢出的问题,当我们选择通过申请一个足够大的空间时,势必就会造成内容空间的浪费,为了合理的解决这个问题,我们则可以根据栈创建时的栈底选择不同...assert来进行问题反馈,因此可以对函数的返回类型设置为void,进行判空操作时,我们是通过函数的返回值来进行判断,所以这里通过分支语句来对不同的返回值做出对应的提示; 1.3 共享栈的入栈 当我要对共享栈进行入栈操作时...,此时函数就会返回3,switc语句中,3并不属于0,1,2这三者中的任意一种情况,因此,语句会执行default语句,此时我们就可以根据对应的提示来进行代码的检测,并对问题进行修改; 1.3.2 满栈...; case MaxSize: printf("栈%c为空栈\n", flag); break; case MaxSize + 1: printf("共享栈中没有栈%c\n", flag...case -1: printf("栈%c为空栈\n", flag); break; case MaxSize: printf("栈%c为空栈\n", flag); break; case

    18810

    C语言】学生管理系统

    本文中,我们将使用C语言来实现一个简易的学生管理系统,包括学生信息的录入、显示、查询等功能。我们将使用文件来存储学生信息,以便实现持久化存储。...利用switch选择语句进行选择要进行操作的步骤,两个选择操作中均用strcmp进行stu与s1判断。初始用flag = 0作为一个标识,如果输入学号查询不到就会进行报错“找不到该学生!...,然后将该信息之后的所有学生信息全部向前移动一位,覆盖掉该信息,最后如果删除成功的话将学生数量-1。...case 2: getchar(); printf("请输入新的性别:\n"); scanf("%c", &sex); stu[i].Stusex = sex;...case 2: getchar(); printf("请输入新的性别:\n"); scanf("%c", &sex); stu[i].Stusex = sex;

    27610

    linux中getchar函数用法,linux getchar函数使用

    –Wall getchar.c –o getchar 运行程序:....getchar h e l l o g e t c h a r The string length is 13 misskissc@monday:~$ 由程序执行过程及结果可推理getchar等待用户输入时有两个特征...: 1) getchar没有立即读从键盘敲进来的字符,而是等用户按下回车之后再开始读字符。...,getchar开始逐个读取输入的字符串,将用户输入的所有字符读取完毕后(因为while的条件为真),再次等待用户的输入: 此次输入字符’n’,注意输入字符’n’时的位置,为什么不是o后面呢,而是换了一行而且相隔了一个空格呢...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除

    3.1K30

    初学C语言的福音-初识关键字和指针

    分支与循环语句 1.什么是语句? 1-1 控制语句: 1-2关于代码风格 2.switch(break和continue) 2-1EOF 2-2getchar和scanf 一。...8bit) byte 字节 (1kb=1024byte) KB (1MB=1024KB) MB (1GB=1024MB) GB (1TB=1024GB) TB (1PB=1024TB) PB 为什么...printf("%d\n", sizeof(float*)); printf("%d\n", sizeof(double*)); return 0; } 不管什么类型的指针,都是创建变量...由分号;隔开的就是一条语句 分类: 表达式语句 函数调用语句 控制语句 复合语句语句 1-1 控制语句C 语言中0为假,非0为真 表达式为假就是0,表达式为真就是1 错误用法:18...只能放整型&&常量表达式 int n = 1; switch (n) { case n://错误 case 2.0://错误 case管的不止一条语句,但是建议加上{},或者封装函数

    30620
    领券