当前课程知识点:C/C++:从基础语法到优化策略 > Final Exam > Final exam > 3.1 Some operators
返回《C/C++:从基础语法到优化策略》慕课在线视频课程列表
大家好这一部分我们将主要介绍循环和条件控制
那么在正式介绍之前呢
我们先介绍一些常见的操作符
主要有三个
第一个是++ / --
是增量
或者--量的这么一个操作符
如是增量的话
那么就是++ 两个加号连在一起
后面跟着变量或者写成x++
--的用法的是完全相同的
那么前面这两种用法有什么区别呢
稍后我们用一个例子来看
首先我们说一下为什么要设计这个++符号或者--符号
那么他主要就是为了方便
因为我们在编程的时候经常对变量连续加一
那么这个时候我们可以用++或者--就非常有效率
我们先来看一下一个例子叫plus_one
这个例子里面
我们来看一下
这个例子代码比较简单
我们先定义了两个变量a和b 它们的值都是20
那么如果我们把它打印出来在这里
毫无疑问他的值就是20
这个时候我们再打印a++等于什么呢
我们将a++打印出来
然后把++b
加号在前面了再打印出来
打印值就++b
然后做完这件事情之后
我们再把a和b分别打印
那么它的值会是多少呢
各位同学可以先思考一下
我来编译这个程序
编译运行大家想想它的值可能会是多少
那么我们来看这个结果
在刚开始初始化以后呢
a和b都是20
那么a++是20 但是++b是21
这是为什么呢
那么我们再来看这个代码
在打印的时候 打印a++这个值的时候
他的值其实是在加号操作之前
也就是他先把这个值取出来
就是这个表达式的值是a的初始值20
然后再去做加法运算
后面这个就不同
后面这个是
先加一先对变量加一然后呢再把变量的值取出来
所以说他的值后面打印出来就是21
当然这件事情做完之后
他们的值都会变成21
这也会变成21
这就是他们的区别
那么我们再来看第二个运算符
第二类运算符是加等于、减等于、乘等于、除等于
百分号等于就是求余等于
这些是一个组合就是叫Combination assignment
他把运算和赋值组合在一起
他这个写法我们来看右上方的这个例子
这个例子里面我们先对 i 赋一个初始值 10
然后 i += 5 这是什么意思呢
他的意思就是说我对 i 加 5 然后再把值 15 赋给 i
第一个是加法运算
他实际上就是说对 i 去 先做加法再做赋值
为什么要设计这个符号
其实也是为了代码的简洁
因为我们在写代码的时候
这种增量加 往上连续的加也很常见
我们一种写法是 i = i + 5这种写法
那么如果我们用这种写法
这样的这种写法
那么比前面刚才我们说的这种写法就更加的简洁
那么它用起来呢
然后来给大家看这个例子
这里Combination i = 10 i += 5那么 i 的值会是多少
这个例子那就很简单了
我们来编译看一下
这个例子的话那毫无疑问应该是15
如果是减法
如果是减法 乘法除法其实是一样的
好我们再来看第三个操作符
这个叫Conditional operator也就是个条件操作符
他是用一个问号再加一个冒号两个符号组成的
什么意思呢
我们很多时候经常写这样的条件判断
if a 大于 b 如果满足这个条件
我们就把 a 的值赋给 c 否则就把 b 的值赋给c
这首先这是一个赋值操作
这样的条件呢
可以写成if来做
但是你也可以写一个更简洁的方式
也就是你把这个条件放在问号的前面a大于b
大于号的优先级更高
a大于b先去做
如果这个条件成立
那么这个表达式的值
整个后面这个三元表达式的值就是a
如果这个条件是false
那么三元表达式的值就是b
那么这个时候就是变成了一个条件赋值
我们可以看看这个例子conditional.cpp
在这个例子里面我们定义了两个变量score和pass
我们首先打印一个输出Please input your score
就是把你的分数输入进来
然后呢把这个值取到就是赋给score
这就是条件判断了
这个条件我正好在这加了一个括号
这样的一个括号
虽然这个地方你加不加这个括号都可以
但是我建议加括号
这样使得这个表达式就阅读起来就是更加的清晰
如果 score 大于 60
大于等于六十
那么这个表达式整个这个表达式的值就是 F(P)
这整个表达式的值就是 F(P)
否则如果不满足这个条件
刚才说错了
如果条件成立那直就是 P
如果条件不成立值就是 F
然后进行赋值赋给pass
这是他的这个逻辑
那么我们再来编译一下看一看
他说请输入你的值
那我说我考了80分 回车
他说pass
我们可以看到这pass的值就会变成p
如果我们换一个分数60
pass的值依然是字符 P
如果我们再输一个40
那么pass值就是 F
这个就是一个三元运算符
根据条件来取这个值还是后面这个值
其实这个地方呢
大家也可以写成一个表达式
这个后面冒号的后面也可以写成一个表达式都是可以的
-Quiz 1
-Quiz 2
-3.3 Relational expressions (> < ==)
-3.5 Branching statements (if else)
-3.8 break and continue statements
-Quiz 3
-4.4 Structures, Unions and Enumerations
-Quiz 4
-5.3 Allocate memory: C++ style
-Quiz 5
-6.3 Recursion and pointer to functions
-Quiz 6
-Quiz 7
-8.1 C/C++ with ARM development board
-Quiz 8
-9.2 Constructors and destructors
-Quiz 9
-10.1 Operators in cv::Mat in OpenCV
-10.4 Automatic conversions and type casts for classes
-Quiz 10
-11.1 Dynamic memory and classes
-11.2 New and improved String class
-11.3 Using pointers to objects
-Quiz 11
-12.2 Static and dynamic binding
-12.3 Access control: protected
-12.4 Inheritance and dynamic memory allocation
-Quiz 12
-13.1 Constructor and assignment
-13.2 Classes with object members
-Quiz 13
-14.1 CNN for image classification
-Quiz 14
-15.3 RTTI and type cast operators
-Quiz 15
-Final exam





