一,操作符分类
算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下标引用,函数调用,结构成员访问
二,原码,反码,补码
有符号整数的三种表达方法均有符号位和数值位两部分。
2进制序列中,最高位的1位被当做符号位,剩余的都是数值位。
原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就可以得到补码。
三,操作符详细
1,移位操作符
<<左移位操作符:左边抛弃,右边补0。
>>右移位操作符:
逻辑右移:左边用0填充,右边丢弃。
算术右移:左边用原该值的符号位填充,右边丢弃。
注:对于移位操作符,不要移动负数位,这个是标准未定义的。
2,位操作符
注:操作数必须是整数。
3,单目操作符
特点:只有一个操作数。
4,逗号表达式
从右到左依次执行
5,下标访问操作符[ ]
操作数:一个数组名+一个索引值
6,函数调用操作符
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。
7,结构体成员访问操作数
结构体成员的直接访问:结构体变量.成员名
结构体成员的间接访问:结构体指针->成员名
三,操作符的属性
1,优先级
概念:如果有多个操作符,哪个运算符应该优先执行。
2,结合性
如果两个操作符优先级相同,这时候就要看结合性了,根据运算符是左结合还是右结合,决定执行顺序。(大部分是左结合,少数右结合,例如"=(赋值操作符)")