前面准备答辩和各种事情耽误很多天,今天又启动本系列学习啦!
左值和右值
简单的理解可以认为左值是有实际内存地址的对象,除了左值以外剩下的就是右值,即使在看起来一个对象被当作右值时,使用的其实是这个对象的值(内容)。就比如 int *p = &a;其实是就是把a的地址赋予指针对象p。
运算符优先级
复合表达式是指有两个或两个以上的运算符组成的表达式。优先级按加减乘除,运算顺序从左到右,括号独立运算。
拿不准运算顺序的地方用括号强制运算;如果运算改变了某个对象的值,在其他表达式里最好不要再使用。
溢出:超出该类型能表示的范围就是溢出。
前置递增运算符和后置运算符
#include <iostream>
int main() {
int i = 0, j = 0;
j = ++i;
j = i++;
std::cout << j << " " << i << std::endl;
}
j = ++i; 先运算 i + 1,再运算j=i。
j = i++;先运算j=i,再运算i + i。
成员访问运算符
.(点)运算符和 ->(箭头)运算符用于引用类、结构和共用体的成员。
点运算符应用于实际的对象。箭头运算符与一个指向对象的指针一起使用。
条件运算符
cond ? expr1 : expr2;
if (cond) {
expr1;
} else {
expr2;
}