运算符
C语言提供了各种各样的运算符,我们可以用来操作数据,特别的,我们可以识别不同分组的运算符,主要包括(算术运算符、比较运算符、逻辑运算符、复合赋值运算符、位运算符、指针运算符、结构运算符以及混合运算符)。
基于两个已知变量 x 和 y,我们对几个常用的运算符进行介绍:
1 算术运算符
算术运算符可以依据所需操作数的数量分为二元运算符和一元运算符,需要两个操作数的即为二元操作符,如下表:
操作符 | 名字 | 示例 | 操作符 | 名字 | 示例 |
= | 赋值 | x = y | * | 乘 | x * y |
+ | 加 | x + y | / | 除 | x / y |
- | 减 | x - y | % | 取模 | x % y |
于此对应,一元运算符只需要一个操作数,如下表:
操作符 | 名字 | 示例 | 操作符 | 名字 | 示例 |
+ | 一元加 | + x | ++ | 自增 | x++ or ++x |
- | 一元减 | - x | -- | 自减 | x-- or --x |
注:x++ 和 ++x的区别在于,x++在使用 x 之后才自增它的值,而++x会在使用x之前自增它的值。
示例,运行以下程序时:
int x = 8;
int y;
int z;
y = x++ /*y值为8,x值为9*/
z = ++x /*z值为10,x值为10*/
2 比较运算符
常见的比较运算符如下表:
操作符 | 名字 | 示例 | 操作符 | 名字 | 示例 |
== | 相等 | x == y | < | 小于 | x < y |
!= | 不相等 | x != y | >= | 大于等于 | x >=y |
> | 大于 | x > y | <= | 小于等于 | x <= y |
3 逻辑运算符
逻辑运算符常在使用布尔值是使用,常见如下:
- !非(例如:! x);
- &&与(例如:x && y);
- || 或(例如:x || y)。
4 复合赋值运算符
当赋值与算术运算同时进行时即组成复活赋值运算符,常见的的如下:
操作符 | 名字 | 示例 | 操作符 | 名字 | 示例 |
+= | 加且赋值 | x += y | /= | 除且赋值 | x /= y |
-= | 减且赋值 | x -= y | %= | 取余且赋值 | x %= y |
*= | 乘且赋值 | x *= y |
5 三目运算符
三目运算符是C中唯一一个使用三个操作数的运算符,且它是表达条件的简便方法。具体而言,若有以下表达式:
<条件> ? <表达式a> : <表达式b>
对于上式,若条件为真,则执行表达式a,否则执行表达式b,三目运算符的功能与 if/else 条件语句相同,但是它更短。
运算符优先级
在C语言中,运算符优先级决定了在表达式中不同运算符的计算顺序。优先级高的运算符会先计算,而优先级低的运算符会后计算,常见的优先级从高到低包括:括号()、单目运算符(++,--,!)、乘法/除法/取余(*,/,%)、加法/减法(+,-)、关系运算符(<,>,==)、逻辑与、逻辑或,以及赋值运算符=。当多个运算符具有相同优先级时,运算顺序由运算符的结合性决定(一般从左到右,单目运算符和赋值运算符是从右到左)。