运算符
运算符表
运算符按照优先级大小由上向下排列,在同一行的运算符具有相同优先级。第二行是所有的一元运
算符。
先理解如下概念:
一元运算符(单目运算符):即操作数只有一个的运输符。上图第2行是所有的一元运算符。
二元运算符(双目运算符):即操作数有两个。
三元运算符(三目运算符):即操作数有三个。条件运算符 ? :
结合性:指的是当一个表达式中存在多个具有相同优先级的运算符时,运算符的结合性规定了它们在表达式中的组合方式。
从右往左结合的只有:一元运算符,三元运算符,赋值运算符
记忆运算符优先级的方法:
1.最高优先级是:数组下标,括弧,结构体选择(.和->)
2.一元运算符 > 二元运算符 > 三元运算符
3.二元运算符优先级:算术 > 移位 > 关系 > 逻辑
4.三目运算符 > 赋值 > 逗号
常用运算符的注意事项
1.++
前置++:如a++,先使用a,然后再a = a+1;
后置++:如++a,先a = a + 1,然后再使用a;
2.**–**同++的规则一样.
3.&& 和 || 它有个外号“惰性运算符"
#include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = 0;
if(a > b && ++a != 0) //因为a > b 已经是假则&&后面不管真假,最后的结果都是假。所以并没有计算后面的表达式
{
printf("false\n");
}
else
{
c = b++; // 后置++,先使用b,因此c = 1,然后b = b + 1;b = 2
}
printf("a = %d,b = %d,c = %d\n",a,b,c);
}
运行结果:
a = 0,b = 2,c = 1
4.sizeof 是运算符不是函数:作用是求类型的大小。