目录
前言
做题的时候总是忘记运算符的优先级和结合性,导致在计算表达式值的时候犹豫不定,所以特别记录一下,忘记的时候方便查看。
一、运算符是什么?
定义:
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
分类:
运算符包括:算术运算符 、 关系运算符 、 逻辑运算符 、位操作运算符、 赋值运算符 、 条件运算符 、 逗号运算符 、 指针运算符 、求字节数运算符和特殊运算符(eg:函数调用运算符)。
优先级:
运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行。
例如:a + b*c
'*'的优先级高于’+‘,所以先算b*c后算a+b*c;
粗糙的记忆方法:单目运算符 > 算数运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符;
结合性:
运算符的结合性是指同一优先级的运算符在表达式中操作运算的组织方向,从左至右运算,还是从右至左运算。例如:
#include<stdio.h>
int main()
{
int a=1,b=2,c=3,d=4;
printf("%d\n",a<b?a:c<d?a:d);
return 0;
}
a<b?a:c<d?a:d表达式的输出结果为1:
这个表达式包含两个条件运算符 ‘? :’,它们二者的运算优先级一样,而条件运算符的结合性为从右至左,所以先运算c<d?a:d值为1,再运算a<b?a:1,所以最后的结果为1.
几目运算符:
表示这个运算符要带几个操作数,分为单目运算符、双目运算符、三目运算符(截止目前的版本,发现四目运算符)。
单目运算符:该运算符只需要带一个操作数,如:++/--/&
双目运算符:该运算符需要两个操作数,如: + - * /
三目运算符:该运算符需要带3个操作数,如 ?: