表达式---C++ 基础
来源:互联网 发布:linux复制所有文件 编辑:程序博客网 时间:2024/06/07 06:50
前言
这一章相对来说比较轻松,主要涉及到的是c++中常见的运算符。一些耳熟能祥的东西我就不打算写在博客里了,主要分析一些细微的点。虽然不要注重细节,但是不知道细节就没有好的语言基础。骐骥千里,非一日之功。
C++ 中提供了许多的运算符,算术运算符、逻辑和关系运算符、赋值运算符、位运算符等等。按照操作数的数量,可以分为一元运算符、二元运算符、三元运算符,一般的来说它们之间的优先级也是一元大于二元,二元大于三元。
基础
1.左值和右值
一个表达式,不是左值就是右值。这个概念从C语言继承过来(左值可以位于赋值语句的左边,右值不能)。
在C++中,左右的概念没有那么简单。但是记住一句话就行:
- 对象被当作右值时,用的是它的值(内容)
- 对象被当作左值时,用的是它的身份(在内存中的位置)
因此,左值可以被当作右值来使用,但是右值不能被当作左值来使用。
2.逻辑和关系运算符
关于逻辑运算符,我们要知道 短路求值,并且在写代码时时刻记住这一点。
- 对于
&
运算,左边为真才对右边进行运算,左边为假就直接返回了 - 对于
|
运算,左边为假才对右边进行运算,左边为真就直接返回了
3.递增和递减运算符
++
,--
操作有前置版本和后置版本,注意一点,后置版本需要将原始值保存下来,以便于返回这个未修改的版本,如果我们不需要修改前的值,这个操作就是一种浪费。
因此,在使用时,如果明白自己的意图,就可以区别使用。如果只需要增加一,那就使用前置版本。
4.位运算
在算法里,这个值得开一个专题来讲。位运算相比算术运算会更快一些,但是会有一些小技巧。这里提一个小点。
移位运算:左移右边是补0,而右移需要根据环境来决定补0还是补1,因此,我们在进行位运算时,最好将数据类型设置成
unsigned
无符号类型,也要注意有符号类型隐式转成无符号类型。
5.类型转换
分为显示转换和隐式转化。
显示转换有:
- static_cast : 只要不包含底层const,都可以使用
- const_cast : 只能改变运算对象的底层const
- reinterpret_cast : 为运算对象的位模式提供较低层次的重新解释,本质依赖机器,看情况使用
优先级
从上到下,优先级依次降低(取成员高、后置比前置高、一元比二元高、二元比三元高、算数比逻辑高、算数比移位高、赋值低、逗号最低)
::
作用域
.
成员选择->
成员选择[]
下标()
函数、类型构造
a ++
后置递增a --
后置递减typeid(a)
类型ID、运行时类型IDstatic_cast<int>(a)
类型转换
++ a
前置递增-- a
前置递减~ a
位求反! a
逻辑非- a
一元负号+ a
一元正号* a
解引用& a
取地址(int)a
类型转换sizeof(a)
对象大小new
创建对象new int[]
创建数组delete
释放对象delete []
释放数组
->* ptr_mem
指向成员选择的指针.* prt_mem
同上
a * b
乘a / b
除a % b
取模
a + b
加a - b
减
a << 1
左移a >> 1
右移
a < b
小于a <= b
小于等于a > b
大于a >= b
大于等于
a == b
相等a != b
不相等
a & b
位与
a ^ b
位异或
a | b
位或
a && b
逻辑与
a || b
逻辑或
a ? b : c
条件
a = 10
赋值a *= 100
a -= 100
a += 100
a %= 100
a <<= 100
a >>= 100
a &= 100
a |= 100
a ^= 100
throw
抛出异常
a , b
逗号
- C#-正则表达式基础
- C基础 - 表达式,表达式优先级(6)
- linux c 正则表达式基础
- c语言基础-表达式05
- [C++][基础]2_表达式
- c 基础数据类型和基本表达式
- C语言基础-----运算符与表达式
- C语言基础 运算符和表达式
- C语言一些基础:数据类型,运算类型及表达式
- C++---基础篇(运算符/表达式/控制语句)
- 零基础学C语言 笔记五 算术表达式
- C++primer学习:标准库特殊设施:正则表达式基础
- c语言基础(5)--运算符,表达式和语句
- C语言基础:运算符、表达式和语句
- java基础改学C++(一)数据类型与表达式
- c语言基础——运算符表达式
- C语言基础学习(二)--运算符表达式
- 正则表达式基础表达式
- 异步向json加入元素
- css:before实现三角形箭头小技巧
- 低级的模仿的图像卷积算法
- 回车实现提交页面
- Android应用 欢迎页 登录页 闪屏页 首页 按home键后 点图标重复启动问题
- 表达式---C++ 基础
- "分散-聚集DMA"以及"scatterlist"
- 使用Faster-Rcnn进行目标检测的原理
- JAVA学习笔记——时间日期类Date和SimpleDateFormat类
- 练习72
- Java+spring-quartz实现任务调度和定时器
- Fzu 2198 快来快来数一数【矩阵快速幂】
- jquery实现三级联动效果
- 并查集——codevs 1188City战争