Chapter 5. Expressions
算数操作符
- eg: + - *
逻辑操作符
- eg: & | ! < =
位操作符
:
| Operator | Function|
| :--------: | :--------:|
| ~ | bitwise NOT 位求反 |
|<<| left shift 左移|
|>>| right shift 右移|
|&|bitwise AND 位与|
|^|bitwise XOR 位异或|
| | bitwise OR 位或|- IO操作符的优先级和结合性:移位操作符具有中等优先级,其优先级比算术操作符低,但比关系操作符、赋值操作符和条件操作符优先级高。
cout << 42 + 10; // ok, + has higher precedence, so the sum is printedcout << (10 < 42); // ok: parentheses force intended grouping; prints 1cout << 10 < 42; // error: attempt to compare cout to 42!
赋值操作符
- 赋值操作符具有右结合性,赋值操作返回的是左值。
ival = jval = 0
,这一句中先将0赋给jval,返回值是jval,再将jval赋给ival。
自增和自减操作符
- 前置操作返回左值,后置操作返回右值。只有在必要的时候才使用后置操作符,因为前置操作需要做的工作更少。
*iter++
后自增的优先级高于解引用,所以这句代码意义是先后自增,然后解引用,当然后自增返回的副本是未自增前的。作为c++程序员,最好熟悉并使用这种简洁又准确的方式。
箭头操作符
.
和->
,知道用就行了。
条件操作符
cond ? expr1 : expr2;
要注意避免深度嵌套,代码太长的话,用if可读性更强些。- 条件操作符的优先级相当低。
sizeof操作符
- 有三种语法形式。
sizeof (type name);
sizeof (expr);
sizeof expr;
- sizeof 操作符的作用是返回一个对象或类型名的长度,返回值的类型为 size_t
逗号操作符
- 逗号表达式是一组由逗号分隔的表达式,这些表达式从左向右计算。逗号表达式的结果是其最右边表达式的值。如果最右边的操作数是左值,则逗号表达式的值也是左值。
复合表达式的求值
- 什么是优先级,什么是结合性?优先级是不同操作符之间先算哪个,结合性是相同优先级操作符之间先算左边还是先算右边的。
- 大多数操作符没有规定其操作数的求值顺序:由编译器自由选择先计算左操作数还是右操作数。
*++iter
iter先自加然后解引用。
new和delete表达式
- 动态创建的对象,初始化情况和静态的一样。
类型转换
- 隐式类型转换(编译器自动进行的)
- 操作数两端的类型被转换成相同类型。
- 用作条件表达式的类型被转换成bool类型。
- 不同类型的变量和表达式之间初始化或者赋值的时候。例如
int *p = 0
int 0 converted to null pointer of type int* - 算术转换,比如整数提升,bool提升到int就是1和0。其他还有很多奇葩的转换细节,一般不会自找麻烦这么写吧
指针转换。看个例子
int a[10]; int* p = a;// 这里是有一个array到指针的转换,我以前以为a就是指针,现在知道却是存在一个类型转换的,不然的话,&a的值就应该是 std::cout<<a<;//所以这里也有转换 std::cout<<&a;//取址和sizeof没有转换,或者引用也没有转换 std::cout<<p;
经过测试,这三个输出结果都是一样的。
- 算数值和指针都可以转换为bool。
- 枚举类型转换成int。
标准库类型定义的转换,例如
while (cin >> s)
这里隐式使用了 IO 标准库定义的类型转换。
- 显式转换
static_cast
:编译器隐式执行的任何类型转换都可以由 static_cast 显式完成dynamic_cast
const_cast
:添加或删除const特性。例如const_cast<char*>(pc_str)
就是可以将const类型的pc_str转换为char*reinterpret_cast
: 这个用的少吧,书上的解释是A reinterpret_cast generally performs a low-level reinterpretation of the bit pattern of its operands- 使用的格式是
castname<type>(expression)
,castname是上面四种转换方式中的名字,type是要转换的类型。
- 建议:避免使用强制类型转换
转载于:https://www.cnblogs.com/arctanx/p/5227934.html
Chapter 5. Expressions相关推荐
- C++ Primer(第4版)(评注版)
<C++ Primer(第4版)(评注版)> 基本信息 原书名: C++ Primer (4th Edition) 原出版社: Addison-Wesley Professional; 4 ...
- C++ Primer英文版(第5版)
<C++ Primer英文版(第5版)> 基本信息 作者: (美)李普曼(Lippman,S.B.) (美)拉乔伊(Lajoie,J.) (美)默Moo,B.E.) 出版社:电子工业出版社 ...
- 多态(polymorphic)
目录 1. 多态的基本介绍 2. 多态实现条件 3. 重写 重写的介绍: [重写和重载的区别] 动.静态绑定机制 5 向上转型和向下转型 向上转型 向上转型的特点(总结): 向下转型 多态的优缺点 ...
- C++ Primer - 5th Edition - 书中源代码 - 课后习题答案
C++ Primer - 5th Edition - 书中源代码 - 课后习题答案 C++ Primer - 5th Edition - 书中源代码 - 课后习题答案 1. C++ Primer, 5 ...
- java 浮点数运算_对于同样的浮点数运算为何 Java 与 C 的结果不相同?
@bombless 在问题的评论里写得没错.IEEE 754最重要的(大家基本上遵守的)是数据的格式.虽然也有算法上的指引(例如有各种rounding mode),但实际上大家实现得不一定那么严格. ...
- Chapter 04-Using Conversion Functions and Conditional Expressions-Conditional Expressions
Conditional Expressions Prvoide the use of the IF-THEN-ELSE logic within a SQL statement Use two met ...
- JavaScript- The Good Parts CHAPTER 2
I know it well: I read it in the grammar long ago. -William Shakespeare, The Tragedy(悲剧:灾难:惨案) of Ti ...
- Think Python - Chapter 12 Tuples
12.1 Tuples are immutable(元组是不可变的) A tuple is a sequence of values. The values can be any type, and ...
- 《JavaScript高级程序设计》Chapter 5 引用类型
Chapter 5 引用类型 使用表格进行归纳,对表格中某些内容会进行必要解释,并把解释放在表格下方. Object类型 Array类型 Date类型 RegExp类型 Function类型 基本 ...
最新文章
- 2021深度学习的研究方向推荐!Transformer、Self-Supervised、Zero-Shot和多模态
- python爬取图片全网通_UC头条:全网通杀——暴强工具推荐: 下载你看到的任意视频...
- 基于Linux命令行KVM虚拟机的安装配置与基本使用
- 机器学习笔记(八)集成学习
- 【毕业求职季】-听说你想去大厂看学妹,带你看看阿里后端实习面经长啥样?
- PANEL中显示窗体
- 11、MFC中自定义消息
- 人工智能是一个工程问题,而不是魔术!
- Android--List与ArrayList区别(转)
- 为什么古诗我们能读懂,白话诗却一头雾水呢?
- [JSOI2008]火星人 hash+splay
- python中定义字典数据类型使用什么符号_python数据类型之字典类型-dict
- php提示Undefined index的解决方法
- 锐浪报表数据源access_锐浪报表应用系列三
- Django验证码*异步方案Celery之Celery介绍和使用(Celery介绍、创建Celery实例并加载配置、加载Celery配置、定义发送短信任务、启动Celery服务、调用发送短信任务)
- allegro怎么导出PCB文件里封装
- 解决“Could not build wheels for xx which use PEP 517 and cannot be installed directly“问题
- 【艾琪出品】-【计算机】《办公自动化基础》-韩伟颖(2002)南开离线作业学习资料
- win10易升_小科普 | 彻底关闭Win10自动更新
- android分析内存工具,Android Studio内存泄漏分析工具汇总