一、赋值运算符
因为赋值语句是从右向左运算的,也就是说从右端开始计算。
二、算术运算符
在C语言中有两个单目和五个双目运算符。
符号功能
+ 单目正
- 单目负
* 乘法
/ 除法
% 取模
+ 加法
- 减法
三、逻辑运算符
逻辑运算符是根据表达式的值来返回真值或是假值。其实在C语言中没有所谓的真值和假值,只是认为非0为真值,0为假值。
符号功能
&& 逻辑与
|| 逻辑或
! 逻辑非
另外,当一个逻辑表达式的后一部分的取值不会影响整个表达式的值时,后一部分就不会进行运算了。
四、关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号功能
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
五、自增自减运算符
对于自增运算符在变量的前面,先加减再赋值
因为自增运算符在变量的后面,赋值后再加减
所以先把num2赋值给b,b应该为8,然后num2自增加1变为
9。
那么如果出现这样的情况我们怎么处理呢?
c=num1+++num2;
到底是c=(num1++)+num2;还是c=num1+(++num2);这要根据编译器来决定。
六、复合赋值运算符
+= 加法赋值
-= 减法赋值
*= 乘法赋值
/= 除法赋值
%= 模运算赋值
<<= 左移赋值
>>= 右移赋值
&= 位逻辑与赋值
|= 位逻辑或赋值
^= 位逻辑异或赋值
七、条件运算符
条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回两外两个表达式中的一个。
<表达式1>?<表达式2>:<表达式3>
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
例如:
a=(b>0)?b:-b;
八、逗号运算符
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
九、优先级和结合性
从上面的逗号运算符那个例子可以看出,这些运算符计算时都有一定的顺序,就好象先要算乘除后算加减一样。优先级和结合性是运算符两个重要的特性,结合性又称为计算顺序,它决定组成表达式的各个部分是否参与计算以及什么时候计算。
下面是C语言中所使用的运算符的优先级和结合性:
优先级运算符结合性
(最高) () [] -> .
自左向右
! ~ ++ -- + - * & sizeof 自右向左
* / % 自左向右
+ - 自左向右
<< >> 自左向右
< <= > >= 自左向右
== != 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
= += -= *= /= %= &= ^= |= <<= >>= 自右向左
(最低) , 自左向右