第九章 控制语句之条件语句(以韦恩图与程序图来深度剖析)

C语言学习之路

第一章 初识C语言
第二章 变量
第三章 常量
第四章 字符串与转义字符
第五章 数组
第六章 运算符
第七章 指针
第八章 结构体
第九章 控制语句之条件语句



前言

随着前面章节的学习,我们都只是在围绕着一个变量展开学习的。比如变量的数据类型、变量的运算、变量的地址、一堆变量组成的数组以及自定义的变量结构。

这就类似于我们的英语学习,上述的知识就像单词的学习。那么接下来,我们有了单词的基础,就应该开始对句子的学习。

那么在C语言中,对于句子的学习就是去学习控制语句。控制语句包括三种:条件语句、循环语句和转向语句。

今天就开始对条件语句的学习。


一、条件语句

1、if 语句:

(1)if 语句:

if ( 条件 )
{
  满足条件后执行的代码段
}

这个代码是非常容易理解的。那么在讲解这个代码的之前,我们需要复习一个概念,在C语言中,0代表假,非零表示真。那么当()内的条件为真的时候,其实就会返回一个真,反之返回一个假。
在这里插入图片描述

有了这个概念,我们不防理解一下下面的代码:

if (1)
{
  代码段
}

那么这个语句的条件中,直接写了一个1。那么代表着什么呢?背后代表着,括号内的判断恒为真。所以括号内的代码段必定执行。那么这个输入1的操作,在后续的构造死循环的操作中经常用到。

(2)if…else语句:

if (条件)
{
代码段1
}
else
{
代码段2
}

那么这个代码什么意思呢?
当括号内的条件为真的时候,执行的代码是代码段1。当括号内的条件为假的时候,执行的代码是代码段2。
图解:
在这里插入图片描述
else的就近原则:

int a = 1;
	int b = 2;
	if (a == 2)
		if (b == 2)
			printf("haha\n");
	else
	{
		printf("hehe\n");
	}

我们不妨来思考一下上述代码打印后的结果是什么?
当我们思考后,可以看看代码的运行结果:
在这里插入图片描述
我们发现,这段代码什么都没有打印。这是为什么呢?
在这里插入图片描述
步骤1进行判断,发现表达式不满足。所以该if下的语句将不会打印。那么问题的关键在于,哪些语句属于这个if判断句呢?
不妨让我把这个代码写的规范些,大家就会有了清晰的认知。
在这里插入图片描述
我想,这道题的谜团,已经迎刃而解了。这不仅仅体现了else的就近原则,还体现了代码规范的重要性。

(3)if…else if语句:

if (条件1)
{
代码1
}
else if (条件2)
{
代码2
}
else if (条件3)
{
代码3
}
...
else
{
代码 n
}

这样其实就是多种if(){}的集合。即在多个条件下,从上到下依次判断,当有一个条件满足时,开始执行其对应的代码,执行完直接退出该条件语句,不再进行剩余条件的判断。
图解:在这里插入图片描述
那么我们会发现,这些圈之间是没有交叉的,我们不妨思考一下,当圈产生交叉时,结果又是什么呢?
在这里插入图片描述
当出现这种情况时,代码如何执行呢?
我们以下面的例子来回答这个问题。

int a = 2;

	if (a > 1)//条件1
	{
		printf("1");
	}
	else if (a < 3)//条件2
	{
		printf("2");
	}
	else
	{
		printf("3");
	}

条件1和条件2均满足,当我们执行时,最后的打印结果是什么呢?
现在我们执行代码后,来直接看最后的结果。
在这里插入图片描述
图解:
在这里插入图片描述
其实很简单,再读一下,刚才我写的黑体字,我想大家就自然明白了。
“即在多个条件下,从上到下依次判断,当有一个条件满足时,开始执行其对应的代码,执行完直接退出该条件语句,不再进行剩余条件的判断。”

2、switch语句:

int a = 2; 
switch(a)
{
  case 1:
    代码1
    break;
  case 2:
    代码2
    break;
  case 3:
    代码3
    break;
  case 4:
    代码4
    break;
  default:
    代码5
    break;
}

首先,我们对上述的代码进行解释。
在这里插入图片描述
编译器根据a的值,进行第一次判断,发现不满足。再跳转到第二次判断,发现满足条件,那么就开始执行代码2,代码2执行完以后,就会执行后面提到的转向语句break,然后跳出该switch语句。那么结尾处的default则起到了一个else的作用。
在这里插入图片描述
通过图解我们发现,其实它非常像一个if() {}else if(){}...else{}的简化版感觉。
那如果我们不写break会怎样呢?
以下面的例子为例:
在这里插入图片描述
图解:
在这里插入图片描述
也就是说,switch语句只会通过判断条件来决定从何处开始!而通过break的配合退出该语句。否则,会执行到底!所以一定要写break!!!!!


总结

通过今天的学习,我们要熟练地掌握四种条件语句,并明白之间的区别和背后的逻辑。

业精于勤荒于嬉,行成于思毁于随。——韩愈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值