C语言的分支语句if的运用

一,分支语句

1,if语句的形式

1.if(表达式)

2.  语句;

在c语言中表达式成立(为真)就执行语句,若表达式不成立(为假)就执行不语句。

c语言中,0为假,非0为真。也就是说表达式为0就不执行语句,表达式为非0就执行语句。

例子:

判断1个数是不是偶数

c
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
	{
		printf("偶数");
	}

	return 0;
}

1.2,else

一个数不是偶数就是奇数,那么怎么来判断呢?这里就需要if...else...语句了

if...else语法格式

1. if (表达式)

2. 语句1;

3. else

4. 语句2;

例子:

C
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 0)
	{
		printf("偶数");
	}
	else
	{
		printf("奇数");
	}

	return 0;
}

我们知道分支语句中有多个语句

但是在c语言中if...else...是默认控制一条语句的

例子:

C
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
		printf("成年了\n");
	    printf("可以考驾照了");
	return 0;
}

这个代码我们的本意时等于或者大于18才打印成年了和可以考驾照了但是结果是不管等于,大于还是小于都打印了可以考驾照了这和我们写这个代码的初衷相背。

那么如何解决这种问题呢?

我们可以给if加上个{}

C
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年了\n");
		printf("可以考驾照了");
	}
	return 0;
}

我们再看这个代码就没有违背我们写这个代码时的初衷,等于和大于才会打印成年了和可以考驾照了而没有满足这个条件就不会打印,所以我们在写if语句时应该加上{}这也是一种好的习惯也不要觉得加上{}麻烦,同样在写else时我们也应该和if加上{}。

1.4 悬空else

悬空else是if...else...中比较常见的问题我们看这个代码

例子:

C
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hello c");
	else
			printf("hello c++");
	return 0;
}

这个代码我们是想打印hello c 和hello c++我们可以看这个代码应该是打印hello c++的我们运行下看看

结果什么也没有打印那为什么呢?

这是因为if...else...语句的语法规则是就近原则,而不是对齐所以下面那个else的匹配对象是第二个if而不是第一个if,那么怎么避免这种问题呢?我们还是给写if...else...语句是加上{}我们就可以解决这个悬空else的问题了。

我们再看下面的代码:

C
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hello c");
	}
	else
			printf("hello c++");
	return 0;
}

我们给第一个if加上{}后就是我们想要的结果了,所以在写if...else...语句时应该要有个加上{}的习惯

所以在使用if时我们应该要有给if...else...的语句加上{}来避免悬空else的问题和结果与自己的想法不一致的问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值