if语句

初识c语言

c语言有三大结构
1.顺序结构
2.选择结构
3.循环结构

分支语句的关键字

if
switch

何为语句?
用“;”隔开的内容叫一条语句

;

这个也算是语句,不过是空语句
分支语句(选择结构)

if语句:
语法结构:

  1. if(表达式)
    语句;
  2. if (表达式)
    语句1;
    else
    语句2;
  3. 多分支
    if(表达式1)
    语句1;
    else if(表达式2)
    语句2;
    else
    语句3;

下面以代码为例

#include <stdio.h>
int main()
{
	int age = 20;
	if (age < 18)
	printf("未成年\n");
	else
		printf("成年\n");
	
}

多分支选择语句:

int main()
{
	int age = 20;
	if (age < 18)
	printf("未成年\n");
	else if (18<=age<28)
		printf("青年\n");
	
}

经过运行就能发现,如果输入50打印出来的结果也是“青年",显然不符合我们的预期,这里else if 括号中的表达式出现了错误,不可以以这种形式书写表达式

应该正为:

#include <stdio.h>
int main()
{
	int age = 50;
	if (age < 18)
	printf("未成年\n");
	else if (age <= 18 && age < 28)
		printf("青年\n");
	else if(age >= 28 && age < 50)
		printf("中年\n");
	else if (age >= 50 && age < 90)
		printf("老年\n");
	else
		printf("老不死\n");
}

此外这段代码还可以写为:

#include <stdio.h>
int main()
{
	int age = 50;
	if (age < 18)
	printf("未成年\n");
	else
	{
		 if (age <= 18 && age < 28)
				printf("青年\n");
			else if (age >= 28 && age < 50)
				printf("中年\n");
			else if (age >= 50 && age < 90)
				printf("老年\n");
			else
				printf("老不死\n");
	}
}

在 if 语句中,若 if 的语句列表不止一个,要使用 {}代码块将所有语句列表括起来,否则会发生编译错误 ,如下所示

#include <stdio.h>
int main()
{
	int age = 10;
	if (age < 18)
		printf("未成年\n");
	printf("未成年不准恋爱\n");
	else
	{
		if (age <= 18 && age < 28)
			printf("青年\n");
		else if (age >= 28 && age < 50)
			printf("中年\n");
		else if (age >= 50 && age < 90)
			printf("老年\n");
		else
			printf("老不死\n");
	}
}

应该调整为:

#include <stdio.h>
int main()
{
	int age = 10;
	if (age < 18)
	{

		printf("未成年\n");
		printf("未成年不准恋爱\n");

	}
	else
	{
		if (age <= 18 && age < 28)
			printf("青年\n");
		else if (age >= 28 && age < 50)
			printf("中年\n");
		else if (age >= 50 && age < 90)
			printf("老年\n");
		else
			printf("老不死\n");
	}
}

悬空else:
先以一段代码为例

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 0)
	if (b == 1)
		printf("5\n");
	else
		printf("10\n");
	return 0;
}

可以看到,这段代码压根编不出结果,是因为,else 和 上面两行代码的 if 对应发生了错误,而 else 只会选择与其最近的 if 对应。

改进方案:
若想要结果为 10

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	
	if (a == 0)
	{
		if (b == 1)
			printf("5\n");

		else
			printf("10\n");
	}
	return 0;
}


在第一个 if 后添加一个代码块,结果就是10了

这里有一个良好的书写习惯
如下代码:


#include <stdio.h>
int main()
{
	int num = 4;
	if (num = 5)
		printf("hehe\n");
	return 0;
}


可以发现,这里手误,把 num==5打成了num=5,产生了一个bug,而且难以检测,导致结果错误。

所以,在以后的代码编写中把num==5换成5==num,便不会产生bug
这是一个良好的的编写习惯!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值