算数运算符
+ - * / %
1. 小数值 / 大数值,商为0,余数是小数本身;
2. 截取数值中的最后一位(个位)的数值,使用val%10;
3. 移除数值中的最后一位(个位),使用val/10;
4. 同样的运算逻辑,可扩展到十位、百位以及其他位。
关系运算符
> >= < <= != ==
逻辑运算符
! && || & | ^
赋值运算符
= += *= /= -=
运算符优先级
位运算符
位运算符的实际意义
“&”位运算符(按位与)
算术
“|”位运算符(按位或)
算术
“~”位运算符(按位取反)
~位运算过程
将值转二进制并按位取反==>判断正负整数符号==>按正或负的算法进行二进制转换十进制。
#include <stdio.h>
int main(void)
{
int i = 5;
int k = 0;
k = ~i; //正整数取反后成了负数,需要按位取反后末位加1完成转换
printf("test你好!!!!\n");
printf("%d\n", k); //k值为-6
return 0;
}
“^”位运算符(按位异或)
算术
“<<”位运算符(按位左移)
算术
将值的所有二进制位向左移动n位,右边补0。
左移n位,相当于
**值x2****n**
次方(值不能溢出)。“>>”位运算符(按位右移)
算术
将值的所有二进制位向右移动n位,左边补0。
右移n位,相当于
**值/2****n**
次方(值不能溢出)。其他运算符
自增/自减
分类
前自增/自减 --> ++i或--i;
后自增/自减 --> i++或i--;
异同
相同点:
最终都是使得i的值加1。
不同点:
前自增(自减)整体表达式的值是i+1(i-1)后的值,如下所示:
int i = 0;
int a;
a = ++i; //程序执行i的自增后,再赋值给a
后自增(自减)整体表达式的值是i+1(i-1)后的值,如下所示:
int i = 0;
int a;
a = i++; //程序将i赋值给a后,再执行i的自增
自增/自减存在的意义
```c
- 可以使代码更加精练;
- i++等价于i+=1;或i=i+1,自增/自减是运行在CPU的寄存器的,拥有更快的处理速度
```
使用自增/自减的注意事项
```c - 代码编程时,应该尽量屏蔽掉前自增和后自增的差别;
- 自增表达式尽量单独成一个语句,不要把它作为一个完整语句的一部分来使用,如:
int m = i++ + ++i;
或
printf(“%d %d %d”,i++,++i,i);
<a name="DFDbs"></a>
## 三目运算符
```c
语法规则:
判断表达式A ? B : C;
等价于
if(A)
B;
else
C;
逗号表达式
语法规则;
(a,b,c,d);
表示程序从左到右执行,最终表达式的值是最后一项的值,即:
int i = 0;
i = (1,2,3,4); //该语句执行完后,i = 4