【C语言】细品分支结构——if-else语句

©作者:凡人编程传
©系列:C语言初阶(适合小白入门)
©说明:以凡人之笔墨,书写未来之大梦

在这里插非图片描述

今天是C语言初阶系列的开篇章,接下来就期待各位能够从此收获到或多或少的知识,若有地方讲错,还请各位指出,在下会依次改正,废话不多说,我们直接开整

۞关系运算符

在学习分支结构前,我们先简要了解一下关系运算符,C语言中的关系运算符就是数学中的大于小于以及不等于等,他们比较后的结果是真/假。说到这里注意一点,在C语言中0代表假,而非零代表真。例如:-1,-2都是代表真。不要误以为负数为假
C语言中的关系运算符如下表

在这里插入图片描述

۞if-else语句

if语句的一般格式

	if(表达式)
		语句;

该语句是分支结构中最简单的语句了,根据表达式的真假来决定是否执行if语句控制的语句。如下:

在这里插入图片描述

if-else语句的一般格式

if-else语句的一般形式为:
if(表达式)
	语句1;
else 
	语句2;

该语句用于实现分支结构,根据表达式的真假来决定执行语句1还是语句2.若表达式为1,则执行语句1.若表达式为假则执行语句2.如下:
在这里插入图片描述

if-else语句中的一些小陷阱

  • 陷阱代码1
#include<stdio.h>
int main()
{
	int a=3;
	if(a==5)
		if(a>3)
			printf("hehe\n");
	else
		printf("haha\n") ;
	return 0;
}```

运行结果如下
在这里插入图片描述

之所以什么都没有打印,还要介绍我们的一个知识点:else总是与它前面的,最近的,未配对的if进行配对。这里的else与第一个if对对齐的代码风格会让不知道这一点概念的产生视觉错觉,默认以为else与对齐的if进行配对。

  • 陷阱代码2
#include<stdio.h>
int main()
{
	int age = 60;
	if(age < 18)
		printf("少年\n");
	else if(18<= age <= 26)		//程序结果是什么?
		printf("青年\n");
	return 0;
}

运行结果:
在这里插入图片描述

因为<=是左结合,所以从左到右计算,关系运算18<=age的结果是1,计算下一个关系运算,1<=26,故结果为1(真)执行语句printf,输出青年。这样的写法是不推荐的,很容易因为很多编译器在语法上不会报错,从而导致逻辑错误,所以应该涉及到逻辑与(即两个为真全为真)

如下代码:

#include<stdio.h>
int main()
{
	int age = 60;
	if(age < 18)
		printf("少年\n");
	else if(age >= 18 && age <= 26)		
		printf("青年\n");
	return 0;
}

;运行结果:
在这里插入图片描述

这时候程序结果为什么都没打印(因为age>=18为真(1),age<=26为假(0),所以逻辑与运算只要有一个为假那么全假)。不执行if里的语句

代码风格以及小拓展

好的代码风格往往会在面试中加分,让面试官及同事对你的印象加分。所以我们要从刚开始学编程就养成良好的代码风格。

空格以及对齐

有的人可能已经发现我们前面写的代码块中的代码都是基本上每个符号是空了格的,这种风格会让人眼睛感到清晰。
如下:

#include<stdio.h>
int main()
{
	int a = 3;
	for( a = 0; a < 3; a++)
	{
		printf("养成好的代码风格\n");
	}
	return 0;
}

还值得注意一点的是,若你要写单条语句被if语句等语句控制,你应该对齐每一个if和else;或者说,你可以加一个花括号来扩起来更容易让人清晰那条语句被那条语句所控制

如下:

#include<stdio.h>
int main()
{
	int a = 3,b = 2;
	if(a > 1)
		printf("hh\n");
	else 
		printf("haha\n");
	//或者以下
	if(b > 1)
	{
		printf("lala\n");
	}
	else 
	{
		printf("haile\n");
	}
	return 0;
}

小拓展:? : (三目操作符)

为什么要介绍这个操作符,因为它与if-else语句有着相同的功能。
格式:
表达式?返回值1:返回值2

?前面的表达式就可以看作是if()中的表达式,返回值1就是if中的语句1,返回值2就是else中的语句2;

如下

#include<stdio.h>
int main()
{
	int a = 1, b = 2,c;
	if(a>b)
		c = 1;
	else 
		c = 0;
	//如下
	c = a > b ? 1 : 0;
	return 0;
}

结果都是0,可见这个操作符还要简单些(但是可读性很差),但是此操作符可能只能用于执行这些逻辑简单的代码,遇上后面复杂的逻辑关系,就必须要用到if-else

۞结言

写作不易,希望各位有收获的同时能支持一下博主,若内容有不对的地方很高兴得到您的指点,我们下期见!

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值