C语言提供了丰富的运算符,根据运算符需要的操作数个数,可分为单目运算符(一个操作数)、双目运算符(两个操作数)和三目运算符(3个操作数)。表达式总是由运算符和操作数组成,它规定了数据对象的运算过程。常见的运算符如下所示:

(1)自增(++)与自减(--)运算符:作用是将数值变量的值增加1或减少1。其中 ,++value或--value称为前缀方式,value++或value--称为后缀方式,区别是:前缀式先将变量的值增1,然后取变量的新值参与表达式的运算;后缀式先取变量的值参与表达式的运算,然后再将变量的值增加1。

例如:int b = 10, j;
如果j = b++;
那么先取b的值赋值给j,于是j值为10,b值再自加,b=11。
如果j = ++b;
那么b先自加,得到b=11,然后再取b值计算,j值为11。


(2)赋值运算符(=):作用是将一个表达式的值赋给一个变量,可进行组合赋值。例如:

a=10;       //给变量a赋值为10;

a+= 12;    //等价于a=a+12;


(3)关系运算符:关系运算符用于数值之间的比较,包含等于(==)、不等于(!=) 、小于(<)、小于或等于(<=)、大于(>)、大于或等于(> =)这6种,结果的值为1 (表示关系成立)或为0(表示关系不成立)。多个数值在使用关系运算符在比较的时候原则是左结合,也就是a>b>c在进行比较时,先比较a>b是否成立,成立结果就是1,不成立结果就是0,然后让结果的值再和c进行比较。


(4)逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!)的运算结果为1(表示true)或为0(表示false)。

1)“ 逻辑非”是单目运算符,它将操作数的逻辑值取反。

2)“逻辑与” 是双目运算符号,其含义是“当且仅当两个操作数的值都为true时,逻辑与运算的结果为true”。

3)“ 逻辑或”是双目运算符号,其含义是“当且仅当两个操作数的值都为false时,逻辑或运算的结果为false”。


(5)关系运算符:条件运算符是C语言中唯一的三目运算符,也称为三元运算符,它有3个表达式:表达式1?表达式2:表达式3。

先求解表达式1,若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。


(6)逗号运算符:逗号运算符带两个操作数,结果是右操作数。多个表达式可以用逗号组合成一个表达式,即逗号表达式。逗号表达式的一般形式是:表达式1,表达式2,...,表达式n,它的值是表达式n的值。

逗号运算符的用途仅在于解决只能出现一个表达式的地方却要出现多个表达式的问题。它将两个及其以上的式子连接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。

例如:(3+5,6+8),其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值14;

再如:a=(a=3*5,a*4)的值是60,a的值在逗号表达式里一直是15,最后被逗号表达式赋值为60,a的值最终为60。


(7)位运算符:要求操作数是整型数,并按二进制位的顺序来处理它们。C/C++提供6种位运算符:取反(~)、按位与(&)、按位或(|)、按位异或(\^)、按位左移(<<)、按位右移(>>)。