C语言操作符的分类:
算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式。
一、算术操作符:+、-、*、/、%
1.除了%操作符之外,其他的几个操作符可以用作整数和浮点数。
2.除了/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
3.%操作符的两个操作数必须为整数。返回的是整除之后的余数。
二、移位操作符
〈〈左移操作符:移位规则:左边抛弃,右边补0
〉〉右移操作符:移位规则:(1)逻辑移位:左边用0填充,右边丢弃(2)算术移位:左边用原值的符号位填充,右边丢弃。
三、位操作符
& //按位与 | //按位或 ^ //按位异或
它们的操作数必须是整数
四、 赋值操作符
+= -= *= /= %= >>= <<= &= |= ^=
五、 单目操作符
!逻辑反操作 -负值 +正值 &取地址 sizeof操作数的类型长度(以字节位单位) ~对一个二进制数按位取反 --前置、后置 -- ++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换操作符
sizeof 是一个操作符不是函数
int a = 0; sizeof (a) 和sizeofa都是正确的
但是sizeof(int)正确 sizeof int 错误
前置++a,--a 先计算a++和--后a的值,早使用a
后置a--,a++ 先使用a的值,然后a的值再自增,自减
六、 关系操作符
< <= > >= != ==
七、 逻辑操作符
&& 逻辑与 ||逻辑或
区分按位与和逻辑与
1&2-------->0 1&&2-------->1
1|2--------->3 1||2----------->1
a&&b&&c 当a的值为0,则不再判断b和c,也不再计算b和c的值
a||b||c 当a的值为1,则不再判断b和c,也不再计算b和c的值
八、 条件操作符
exp1 ? exp2 : exp3
如果exp1结果为真,表达式的结果为exp2的结果,否则为exp3的结果
a> b? max=a : max = b;也可以写为 max = a>b? a : b;
九、 逗号表达式
其他运算符中的三目运算符“condition?exp1:exp2 ”是C语言中唯一的三目运算符可以用if——else语句来描述。
总结:1 左移运算符左移一位相当于乘二,其效率比乘以2的效率高。左移其右边自动补零,右移其左边补符号位。
2 这些操作符的优先级顺序 ! > 算术运算符 > 关系运算符 > && > || > 赋值运算符,
3 按位与 ,或运算符不能和逻辑与,或搞混。弄清二者的区别,否则程序会出现意想不到的bug,排查起来不容易被发现。