C语言中的分支语句 | if-else语句和switch语句

C语言中的分支语句 | if-else语句和switch语句,第1张

C语言中的分支语句 | if-else语句和switch语句

写在前面:

C语言是结构化程序设计语言,无非就包含以下三种结构:

  • 顺序结构
  • 选择结构
  • 循环结构

除了这三种再没有其它的了,再要么就是互相嵌套.比如说循环里面有选择等等

而我们接下来要学习的就是分支语句和循环语句:

分支语句:

  • if语句
  • switch语句

循环语句:

  • while循环
  • for循环
  • do while 循环
  • go to循环

循环语句将在下一篇博客进行讲解,敬请期待....

首先究竟是什么的形式才可以称之为语句呢?

形如 printf("bit");   
     1+2;
的语句,在C语言中由一个分号隔开的就是一条语句
分支语句(选择结构)

选择困难可能是很大一部分人比较头疼的一件事,但是在日常的生活中处处都离不开选择.比如:早上几点起,去不去上课,上完课干什么饭.......都是选择.选择不仅仅体现在生活当中,在代码中体现的也是淋漓尽致,下面就让我们好好学习吧.

一.if语句

if语句的三种格式:

if(表达式){
    语句;
}

if(表达式){
    语句1;
}else{
    语句2;
}


if(表达式){
    语句1;
}else if(表达式){
    语句2;
}else{
    语句3;
}

以第二种常用的形式解释一下:

如果表达式中的结果为真,则执行语句1,否则执行语句2. 有这么一句话是这样说的:世界上最远的距离就是,你在if语句,而我在else语句.

而又有很多同学会问到C语言中如何表示真假,什么情况下是真,什么情况下是假呢?这里我觉得很有必要去解释一下.

0表示假,非0表示真.

写一个简单的例子体验一下:

if(a == 1){
    printf("hahan");
}else{
    printf("hehen");
}

代码解释:当a的值等于1时则打印haha,否则打印hehe. 注意判断是否相等的时候需要使用双等于号,即==.

但是在刚学习C语言或者或者分支语句的时候,好多同学都不习惯带{}.这里的{}表示的是一个代码块.于是就会出现各种问题,和自己所想要的代码逻辑所违背.下面就写一个悬空else语句的例子.

if(a == 0)
    if(b == 2)
        printf("hahan");
else
    printf("hehen");

 写下这么一段代码,其本身的逻辑应该是a == 0 且 b == 2时打印haha,a != 0则打印hehe的.

但是运行结果显然是没有任何输出的,是因为else语句遵循最近匹配原则,其真正的代码逻辑是这样的:

如果想要实现我们本身的逻辑,就应该加上{}.

 

除了上面这种情况,很多同学还会出现这样一种错误:写if-else语句时,包含多条语句时不加{}最终导致出现不可预见的错误.

int main() {
	int a = 0, b = 2;
	if (a == 1)
		printf("hahahan");
		printf("hahahan");
	else
		printf("hehehen");
		printf("hehehen");
	return 0;
}

其实这段代码本身的逻辑应该是:如果a==1则打印两行hahaha,否则打印两行hehehe.

但是在实际的代码运行中就会出错.

 由此可见,在写代码时{}最好都不要省略,避免出现一些不可预见的错误.

良好的代码风格同样是非常重要的,好的代码不是写的多么高端,而是具有很高的可读性,而不是只有自己可以很好的读懂.

二.switch语句

switch语句也是一种分支语句,常常用于多分支的情况.

switch语句的格式:

switch(整形表达式){
    语句项;
}

语句项则是一些case语句,如下:
case 整形常量表达式:
    语句;

需要注意的是:整形表达式和整形常量表达式.

整形表达式:必须是一个整形,字符或枚举类型.不能是浮点数或其它类型.

整形常量表达式:数据类型必须与整形表达式相同,且必须是常量或字面量.

switch语句中的break:在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支.

典型的一个例子就是:

	int input = 0;
	scanf_s("%d", &input);
	switch (input) {
	case 1:
		printf("星期一n");
		break;
	case 2:
		printf("星期二n");
		break;
	case 6:
	case 7:
		printf("周末n");
		break;
	default:
		printf("输入错误n");
		break;
	}

break语句的实际效果就是把语句列表划分为不同的部分.

default字句其实就是相当于if-else语句中的else字句,但是它可以出现在语句列表的任何位置,但一般都是在最末尾.

编程好习惯:

  1. 在每一个case语句最好都加上break语句
  2. 在每一个switch语句中都放一条default语句,并且在后面再加上一个break语句.

而在平时我们使用switch语句时却会出现各种不可预见的错误,我们举几个比较典型的例子分析一下.

(1).case关键字与常量之间没有空格

(2).缺少break语句

 上面的两个例子,我们可以得知: 如果case字句中没有break语句,则不跳出switch语句,而是继续向下运行,直至遇到break语句,或者执行完所有的case语句.

(3).switch语句嵌套缺少break语句

由此可以得知,嵌套的switch语句中的break只能跳出里面的switch,而继续执行外面的switch语句. 

 勤奋是你生命密码,能译出你一部壮丽史诗.加油,新生代农民工!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5635475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存