目录
Hello~大家好,先跟大家道个歉,昨天没更新啊。
上上篇有个要纠正的地方,4.2.2 字母大法L指的是long double,但是还是不推荐用字母。
开始正文吧~
我们之前学的程序都是是什么就是什么,没有条件的判断,所以今天我们学习分支结构,可以有条件判断。
学这个,我们要有一些前期准备工作:
6.1 关系运算符
关系运算符是什么意思?卖个关子
关系运算符牵扯到我们之前讲的数据类型bool,先把它讲了。
6.1.1 bool
bool是一种数据类型,它只有两个可能,真或者假。看一眼:
比如我们要一个bool变量来判断考试是否开始(我希望永远为假):
bool test;
同样,它也阔以用赋值表达式:
bool is_ready = true;
bool is_ready = 1; //等价于bool is_ready = true;
bool is_ready = false;
bool is_ready = 0 //等价于bool is_ready = false;
也可以用true和false表示真和假,这里说个知识点:
6.1.2.1 非0即为真
跟标题一样,非零即为真,看代码:
bool is_ready = 0; //等价于false
bool is_ready = 56856954; //等价于true
bool is_ready = 4.5; //等价于true
//...
只要它是个数据类型都能转换为bool类型的true和false。
6.1.3 算术
算术,应该学过(必须!!!)吧,C++里就有,看一眼下面的:
4 + 2 //返回6
4 - 2 //返回2
4 * 2 //返回8
4 / 2 //返回2
4 % 2 //返回0
你可能会问3个问题,咱们一一解答:
*是什么
乘号,C++里没有类似于×的符号
/是什么
除号,C++里也没有类似于÷的符号
%是什么
求余,比如5除2,它不能整除,余1对吧,那5%2就返回1,4除2能整除,就返回0
6.1.3.1 小括号
还有小括号,C++有小括号:
5 - (5 - 2); //返回2
没有中括号和大括号,如果你想实现{3 + [5 - 2 + (1 + 1)] - 1} - 1的话,只需要套小括号就行:
(3 + (5 - 2 + (1 + 1)) - 1) - 1; //返回5
6.1.3.2 运算符优先级
比如下面的算式:
3 + 6 * 4 //36还是27?
计算机是人发明的,所以肯定和人的一些习惯有相似之处,我们是先乘除后加减,有括号就先算小括号,再算中括号,后算大括号,计算机一样的,所以上面的返回27。
有时候,可能还会这样:
120 / 6 * 5; //100还是40?
这时候,因为它俩都是一个优先级,所以C++要看它结合性(查查)是从左往右,还是从右往左,它俩是从左往右,所以是100。
6.1.4 关系运算符
看一看有哪些关系运算符:
关系运算符 | 说明 | |
1 | == | 等于,在a=1,b=1的情况下,a==b返回true,在a=1,b=2的情况下,a==b返回false |
2 | != | 不等于,在a=1,b=1的情况下,a!=b返回false,在a=1,b=2的情况下,a!=b返回true |
3 | < | 大于,在a=1,b=1的情况下,a<b返回false,在a=1,b=2的情况下,a<b返回true |
4 | > | 小于,在a=1,b=1的情况下,a>b返回false,在a=2,b=1的情况下,a>b返回true |
5 | <= | 大于等于,在a=1,b=1的情况下,a<=b返回true,在a=1,b=2的情况下,a<=b返回true,在a=2,b=1的情况下,a<=b返回false |
6 | >= | 小于等于,在a=1,b=1的情况下,a>=b返回true,在a=1,b=2的情况下,a>=b返回false,在a=2,b=1的情况下,a>=b返回true |
比如,我要做一个bool变量ok,如果a等于b ,为true,否则为false:
bool ok = a == b;
6.2 逻辑运算符
我们要写一个bool类型ready,如果a大于b而且b大于c它是true,否则为false,怎么办呢?
这就需要说说逻辑运算符了,C++提供了3种逻辑运算符,&&(逻辑与),||(逻辑或),!(逻辑非)
逻辑与运算规则:
当A为false,B为false时,A&&B为false;
当A为false,B为true时,A&&B为false;
当A为true,B为false时,A&&B为false;
当A为true,B为true时,A&&B为true。
逻辑与运算规则:
当A为false,B为false时,A||B为false;
当A为false,B为true时,A||B为true;
当A为true,B为false时,A||B为true;
当A为true,B为true时,A||B为true。
逻辑非运算规则:
当A为false时,!A为true;
当A为true时,!A为false。
我们用表达式实现开头的问题:
bool ready = a > b && b > c; //条件缺一不可
我们要写一个bool类型start,如果a大于b或b大于c它是true,否则为false,怎么办呢?
bool start = a > b || b > c; //满足一个就行
我们要写一个bool类型good,如果a是true,它是false,如果a是false,它是true,怎么办呢?
bool good = !a; //跟a反着来
6.3 if语句
6.3.1 简单的if语句
先看格式:
if (<条件表达式>) {
<语句块>
}
我们看一眼程序怎么处理它:
我们看一个程序:
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if (a == 1) {
cout << "a is 1";
}
return 0;
}
意思大概是这样的:如果输入的a是1 ,输出“a is 1”,如果a不是1,啥也不干。
我们借助流程图理解一下:
因为我们对if语句不太了解,所以用流程图是最好的办法。
6.3.2 if-else语句
有时候我们在条件为假时也要做事情,所以下面这种语句诞生了:
if (<条件表达式>) {
<语句块1>
}
else {
<语句块2>
}
流程图贴上:
所以我们可以改造一下刚才的程序:
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if (a == 1) {
cout << "a is 1";
}
else {
cout << "a isn't 1";
return 0;
}
意思大概是这样的:如果输入的a是1 ,输出“a is 1”,如果a不是1,输出“a isn't 1”。
6.3.2 if-else if-else语句
有时候,可能有多个要判断的东西,所以有这种语法:
if (<条件表达式1>) {
<语句块1>
}
else if (<条件表达式2>) {
<语句块2>
} //可以加多个else if
else {
<语句块3>
}
呵呵,我知道你们在想什么:
所以我们再来改造一下:
#include <iostream>
using namespace std;
int main() {
int a;
cin >> a;
if (a == 1) {
cout << "a is 1";
}
else if (a == 2) {
cout << "a is 2";
}
else if (a == 3) {
cout << "a is 3";
}
else {
cout << "a isn't 1, 2 or 3";
}
return 0;
}
6.3.2 if语句的嵌套
经常遇到这种情况,如果条件1成立,去做A事情,并且是如果条件2成立,同时做B事情,这时候就需要if语句嵌套了。
if (<条件表达式1>) {
<语句块1>
if (<条件表达式2>) {
<语句块2>
}
}
else if (<条件表达式3>) {
<语句块3>
} //可以加多个else if
else {
<语句块4>
}
先到这里吧,拜~
允许转载,请注明出处