1.算数操作符:+,-,/,*,%
这部分只需注意/,%的除数不可以为零,模运算只能是整型
2.移位操作符:<<,>>
移位的规则:左移操作:左边抛弃右边补零
右移操作:逻辑右移:左边用0填充,右边丢弃
算数右移:左边用符号位填充,右边丢弃
这里还需要注意位移操作符的对象是整型,进行操作时要考虑是否越界,移位的值必须非负,
标准说明无符号值进行所有移位操作都是逻辑移位,有符号值取决于编译器
所以不建议使用移位操作这样程序的可移植性差
位操作:&,|,^
操作数必须为整数
下面是常见的的使用场景:
1)给指定位赋1或0
2)一个数中1的个数
int GetoneCount(int number) {
int count = 0;
for (int i = 0; i <= 32; ++i) {
if (number&(1 << i))
count++;
}
return count;
}
求补和逗号操作符
1.逗号表达式的值为从左到右最后一个
关系操作符
1.其结果值得类型为整型
2.=,==是不同的
在C语言中=为赋值 ==为比较
逻辑操作符
1.短路求值先左再右
2.&,&&,|,||的区别
逻辑操作用于测试0值和非0值而位操作用于比较操作数中对应的位
左值和右值
左值标识了一个储存结果值的地点,标识了一个特定的位置,字面值常量也都不是左值
这个地址指的是程序员可以获得的
操作符的优先级和求值顺序
同一优先级的运算符,结合次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符