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++中对编译毫无影响。
如果本文对你有帮助请点赞支持一下下~