数据对象(data object):用于储存值的数据存储区域。(变量名、数组名、指针等)
左值(lvalue):用来标识或定位存储位置的标签。中间运算结果是常量,不能为左值。
右值(rvalue):能赋值给可修改左值的量。
后来添加了const限定符,有些左值变得不可修改,所以出现了可修改的左值(modifiable lvalue),也叫对象定位值(object locator value)来表示我们所说的左值。
按运算功能分类:
加法运算符(addition operator)
减法运算符(subtraction operator)
除运算时,若是整除,商有小数名,取整数部分,称为截断(truncation)。
浮点数的0可以当除数。
求模运算符(modulus operator),两边必须为整数,运算结果的符号与被除数(前面的)相同。
自增自减的操作数只能是变量。
移位操作可以把数字的所有二进制位水平左右移动
移动的位数可以指定
左移使用<<表示
右移使用>>表示
操作符左边是要被移动的数字,右边是移动的位数
移位操作符不要求左边必须是左值,因为不会去修改它
移位操作会导致某些数位丢失,也会空出一些位置
左移时右边空位置一定补0
有符号数字右移时左边的空位置补充的是符号位
无符号数右移时左边的空位置补0
移位操作中如果没有丢失有效数据则右移n位相当于除以2的n次方,左移n位相当于乘以2的n次方
算术右移(符号位不变,即高位补符号位,正数补0,负数补1)
逻辑右移(高位补0)
左移都是补0
作用是返回一个对象或者类型所占的内存字节数。
使用:sizeof(类型,变量名或者表达式);
sizeof只关心类型,只会分析括号中的类型,不会对括号中的内容进行运算。
如:int i = 5; sizeof(i=10); 输出i还是5。
根据所带操作数个数可以分为:
一元(单目)运算符、
二元(双目)运算符、
三元(三目)运算符、
多目运算符
运算符优先级大概规律:
算术>比较>逻辑>赋值>逗号
括号可以改变运算顺序。