4.1 基础
4.1.1 基本概念
当一个对象作为右值时,用的是对象的值。当一个对象作为左值时,用的是对象的身份(在内存中的位置)。
如果表达式的求值结果是左值,decltype作用于该表达式得到一个引用类型。
4.1.2 优先级与结合律
括号优先级比较高。在第四章结尾处附上了一张表,组的位置越靠前组内运算符优先级越高。
4.1.3 求值顺序
这里讲的比较模糊,我认为C++为了效率,在求值顺序上留下了很多编译器自主发挥的空间,但是我们只需注意一条,当不会改变同一对象的状态也不执行IO任务时,函数的调用顺序不受限制。
4.2 算术运算符
当计算的结果超出类型所能表示的范围就会产生溢出。
参与取余运算的对象必须是整数类型。m%n的符号和m匹配。
4.3 逻辑和关系运算符
对于这两种运算符而言,运算对象和求值结果都是右值。
逻辑与运算符和逻辑或运算符都是短路求值(即当且仅当左侧运算对象无法确定表达式结果时才会对右侧运算对象进行运算)。
4.4 赋值运算符
赋值运算符的左侧对象必须是一个可修改的左值。当两侧对象类型不一致时,右侧对象将转换为左侧对象的类型。
4.5 递增和递减运算符
前置递增运算符将改变后的对象作为求值结果。
后置递增运算符将对象原始值的副本作为求值结果。
4.6 成员访问运算符
解引用的优先级比点运算符的优先级低。
4.7 条件运算符
条件运算符表达式:
cond?expr1:expr2
允许在条件运算符的内部嵌套另外一个条件运算符。
4.8 位运算符
没看懂
4.9 sizeof运算符
表达一个类型所占字节数,所得的值是一个size_t类型,需要注意到它的优先级。另外它可以直接对数组求大小,并且不会把数组名转换为指针。
4.10 逗号运算符
简单介绍了一下逗号运算符。
标签:优先级,对象,C++,运算符,求值,4.1,primer,表达式 From: https://www.cnblogs.com/gp2000/p/17294141.html