if 语句

if语句是一种基本的条件控制语句,它的语法基本跟自然语言中的英语一样(if something happens, do something)。if语句后面还可以选择的加上 else 语句(if something happen,do something ,else ,do other things)。
基本if语句

#include <iostream>
using namespace std;
//基本if语句

int main()
{
	int num = 5 ;
	if ( num > 4 )
		cout <<"数字大于4." << endl;
	num = 3 ;
	if ( num > 4 )
		cout << "数字大于4。" << endl;
	else
		cout << "数字小于等于4." << endl;
	return 0 ;
}

结果:
在这里插入图片描述
if关键字后面跟着用括号括住的表达式,下面跟着的一句会在条件满足的时候运行。
示例中 ,由于一开始时num= 5,因此满足条件num>4,会打印句子。我们也可以加上else关键字和一个语句,这样第二个语句将会在条件不满足的情况下运行。由于后来将num改为3,条件不满足,因此程序执行else后的句子,打印句子。
由于这样的句子只能在if或else后面添加一个语句,我们还是需要能处理多行语句的语法。
多行if语句

#include<iostream>
using namespace std;

//多行if语句

int main()
{
	int num = 5 ;
	int cnt = 0 ;
	if ( num > 4 )
	{
		cout << "数字大于4." << endl;
		cnt++;
	}
	num = 3 ;
	if (num > 4)
	{
		cout << "数字大于4。" << endl;
		cnt++;
	}
	else 
	{
		cout << "数字小于等于4." <<endl;
		cnt++;
	}
	
	cout << "cnt=" <<cnt <<endl;

	return 0;
}

运行结果:
在这里插入图片描述
例子展示了带有许多行语句的if语句用法,这与基本if语句的区别就在于他需要使用花括号{}把条件分支中的语句全都框起来。这是因为在没有花括号的情况下,if只能覆盖一个语句,而不能覆盖多行语句。

为了增强程序的可读性,我们一般会在不同的场合为语句添加缩进(一般只要看到左花括号就缩进,看到右花括号就减少缩进)。缩进在c++中只会被当做空格处理,并不会对语义造成任何影响。
else if 的应用:

#include <iostream>
using namespace std;

//else if 的应用

int main()
{
	int num = 5;
	if (num < 4)
	{
		cout << "数字小于4." <<endl;
	}
	else if ( num > 6)
	{
		cout << "数字大于6." << endl;
	}
	else 
	{
		cout << "数字在4和6之间。" <<endl;\
	}
	return 0;
}

运行结果:
在这里插入图片描述
示例中,我们通过在else后面在增加一个if…else语句的方法增加了一个条件分支,程序num>4不成立的情况下进入下一个条件的判断,直到所有条件都满足时,程序走进else分支。
上述语法适合同一个数值有多个区间的情形,但有的时候我们也会需要层层递进的条件分支,这个时候就可以在if语句中嵌套if语句。
示例:

#include<iostream>
using namespace std;
//嵌套if语句

int main()
{
	bool isNorth = true;
	bool isWest = false;
	if ( isNorth )
	{
		if (isWest)
		{
			cout <<"西北方向!" << endl;
		}
		else
		{
			cout << "东北方向!" << endl;
		}
	}
	else
	{
		if (isWest)
		{
			cout << "西南方向!" << endl;
		}
		else
		{
			cout << "东南方向!" << endl;
		}
	}
	return 0 ;
}

运算结果:
在这里插入图片描述
嵌套if语句的时候,我们可以随意组合之前提到过的任何语法,然而else if的语法本质上就是省略了else后面花括号中的嵌套if语句。
在使用嵌套if语句的时候我们也要注意花括号的添加,这不仅仅是因为多行语句的问题。

悬垂 else:

#include<iostream>
using namespace std;
//悬垂else

int main()
{
	int a = 4;
	if ( a > 3 )
		if ( a > 5 )
			cout <<"a大于5!" << endl;
	else
	cout << "a小于等于3!" <<endl;
	return 0;
}

运行结果:
在这里插入图片描述
示例中,我们可以看到a的值为4,但是程序的运行结果却是“a小于等于3”。这是因为没有加上适当的花括号,else无法判断自己与哪个if配对,编译器就只能选择最近的if语句进行打印,所以else相当于是挂在了a>5的条件之后,而不是a>3之后。这种情况再次说明了缩进在 c++中对编译毫无影响。

如果本文对你有帮助请点赞支持一下下~

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐