目录
Hello,大家好\(^o^)/~,上一次我们学习了分支结构程序类型,下面我们把它讲完。很短哦~
7.1 要补充的算术
上一次我们也学了算术,但是我写完之后发现缺少了点内容,我们接下来把它补充完整。
7.1.1 复合运算操作符
上次我们学了很多种运算操作符,但是我们没有学复合运算操作符,它可以达到事半功倍的效果,比如下面的:
a = a + 2;
可以变成:
a += 2; //简化操作
很省事,我们看一看常见的复合运算操作符:
复合运算操作符 | 说明 | |
1 | += | a += 2等同于a = a + 2 |
2 | -= | a -= 2等同于a = a - 2 |
3 | *= | a *= 2等同于a = a * 2 |
4 | /= | a -= 2等同于a = a / 2 |
5 | %= | a -= 2等同于a = a % 2 |
是不是很好用~
这种方法我不会经常用,但是你们看别人用的时候至少不蒙B。
啥玩意啊
7.1.2 自加/自减运算符
顾名思义,就两种。
看表:
运算符 | 说明 | |
1 | ++ | 自加运算符,a++等同于a = a + 1 |
2 | -- | 自减运算符,a++等同于a = a - 1 |
注意一点,在单独用自加/自减运算符的时候,a++和++a没区别,但是放到一些地方就不同了,a++的意思是使用后+1,++a的意思是使用前+1,自减运算符也是同样的。
没有类似于**,//或%%的啊,这种方法在我们讲循环的时候很常用,其它的不过多讨论。
7.1.3 运算符的转换,结合性与优先级
7.1.3.1 运算符的转换
你可以把一堆乱七八糟的数据类型放在一块运算,但是在运算的时候编译器会把它们转换成不同的类型后,再计算,这叫自动转换,我们之前学过强制类型转换,它俩就对上了,附图:
7.1.3.2 运算符的优先级
在你写表达式的时候,你用了一堆运算符,这时候谁知道先算哪个,后算哪个啊,当然是编译器了~谁的优先级高,先算哪个,谁的优先级低,后算那个,看图:
运算符 | 优先级 | |
1 | ()、[] | 1 |
2 | !、+、-、~、++、-- | 2 |
3 | *、/、% | 3 |
4 | +、- | 4 |
5 | <<、>>、<<<、>>> | 5 |
6 | <、<=、>、>=、instanceof | 6 |
7 | ==、!= | 7 |
8 | & | 8 |
9 | ^ | 9 |
10 | | | 10 |
11 | && | 11 |
12 | || | 12 |
13 | ?: | 13 |
14 | =、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、<<<=、>>>= | 14 |
7.1.3.3 运算符的结合性
有时候,上面的表里出现了同级的运算符,先算哪个呢?这时候需要结合性了。
运算符 | 结合性 | |
1 | ()、[] | 从左到右 |
2 | !、+、-、~、++、-- | 从右往左 |
3 | *、/、% | 从左到右 |
4 | +、-(+和-是正和负) | 从左到右 |
5 | <<、>>、<<<、>>> | 从左到右 |
6 | <、<=、>、>=、instanceof | 从左到右 |
7 | ==、!= | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右往左 |
14 | =、+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、>>=、<<<=、>>>= | 从右往左 |
7.2 switch语句
有时候,很多种情况,if处理起来很麻烦,这时候就需要switch出场了
格式如下:
switch (表达式) {
case 常量表达式1: 语句块1; break;
case 常量表达式2: 语句块2; break;
//...
case 常量表达式n: 语句块n; break;
default: 语句块n+1;/*表达式不满足上述任何常量表达式时做的事情*/
}
比如我们要做一个检测n的程序,如果n是1,输出“n is 1” ,如果n是2,输出“n is 2”输出“n is 2” ,如果n是3,输出“n is 3” ,否则输出“n isn't 1,2 or 3”,
开干!
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
switch (n /*表达式*/) {
case 1: cout << "n is 1"; break; //n为1
case 2: cout << "n is 2"; break; //n为2
case 3: cout << "n is 3"; break; //n为3
default: cout << "n isn't 1,2 or 3"; break; //n不为1,2或者3
}
return 0;
}
是吧~ 应该不用放流程图了吧,因为懒你们已经知道了逻辑
7.3 goto语句
还有一种格式:
goto 代码块名称;
代码块名称: 代码块;
上面的程序可以成为:
if (n == 1) {
goto a;
}
else if (n == 2) {
goto b;
}
else if (n == 3) {
goto c;
}
else {
goto d;
}
a: cout << "n is 1.";
b: cout << "n is 2.";
c: cout << "n is 3.";
d: cout << "n isn't 1,2 or 3";
这种方法我们不过多讨论。
7.4 ?: 运算符
还有一种方法,跟if-else语句有点像,长这样:
<条件表达式> ? <语句1> : <语句2> //语句1在条件表达式成立时做,语句2在不成立时做
看注释就明白了,看一个:
int n;
cin >> n;
bool is_zero = n = 0 ? true : false; //如果输入的n为0,设为true,否则设为false
这种方法我们有时会用,你知道就行了
先到这里吧,拜~
允许转载,请注明出处