C++从入门到放弃--7.分支结构程序设计(下)

目录

7.1 要补充的算术

7.1.1 复合运算操作符 

 7.1.2 自加/自减运算符

 7.1.3 运算符的转换,结合性与优先级

7.1.3.1 运算符的转换

7.1.3.2 运算符的优先级

7.1.3.3 运算符的结合性

7.2 switch语句

7.3 goto语句

7.4  ?: 运算符


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<、<=、>、>=、instanceof6
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 

 这种方法我们有时会用,你知道就行了

先到这里吧,拜~

允许转载,请注明出处 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值