运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。
C语言内置了丰富的运算符,大体可分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符。
根据运算符可操作的操作数的个数,可把运算符分为一元运算符、二元运算符和多元运算符(一般三元)。
1、算数运算符
用于数值计算,包括:加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++)、自减(--)。
2、关系运算符
用于比较运算,包括:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=)。
3、逻辑运算符
用于逻辑运算,包括:与(&&)、或(||)、非(!)。
4、位操作运算符
按二进制位进行运算,包括:位与(&)、位或(|)、位非(~)、 位异或(^)、左移(<<)、右移(>>)。
5、赋值运算符
用于赋值运算,包括:简单赋值(=)、复合算术赋值(+=、-=、*= 、/=、%=)以及复合位运算赋值(&=、|=、^=、>>=、<<=)等。
6、条件运算符
用于条件求值,三目运算符:(x > y) ? x : y。C语言中有且只有这一个三目运算符。
7、逗号运算符
用于把若干表达式组合成一个表达式:表达式1 , 表达式2。
8、指针运算符
用于取内容(*)和取地址(&)两种运算。
9、求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符
包括括号()、数组下标[]、成员(-> 和 .)等。
比如式子“x = 1 + 2 * 3 / 4”,需要先计算乘再计算除,然后是加,最后是赋值。这里介绍下关于运算符在参与运算过程中的两个概念:
- 优先级:当不同运算符优先级不同时,先计算谁后计算谁
- 结合性:当不同运算符优先级相同时,先计算谁后计算谁
运算符的优先级和结合性
作为初学者,当一个表达式中有多个运算符时,如果不知道哪个优先级高哪个优先级低就可以查一下优先级表,等用的时间长了自然而然就记住了。而且,事实上在编程的时候也不需要考虑优先级的问题。因为如果不知道优先级高低的话,加一个括号就可以了,因为括号( )的优先级是最高的。
另外,大多数运算符的结合性都是从左往右。从右向左的一个是单目运算符,另一个是三目运算符,还有一个就是双目运算符中的赋值运算符=。运算符的“结合性”也不用死记,在不断使用中就记住了。