C语言的操做符分为:算术操做符、移位操做符、位操做符、赋值、单目操做符、关系操做符、逻辑操做符、条件操做符、逗号操做符、下标引用、函数调用和结构成员等,在这简单介绍下这几种操做符。数组
一、算术操做符:+、- 、* 、/、%函数
其中‘%’只接受两个整型操做数,其返回的值是余数而不是商。除了‘%’,其余的操做符既适用于浮点型又适用于整数类型。当‘/’操做符的两个操做数都是整数时,他执行整数运算,在其余状况下执行浮点数除法。指针
二、移位操做符:简单的把一个值的位向左或向右移动。table
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 |
向左移3位 逻辑移位变量
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
向左移3位 算术移位引用
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 |
向右移3位 逻辑移位二进制
0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
向右移3位 算术移位float
1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
移位操做符的左操做数的值将移动由右操做数指定的位数,两个操做数必须为整数。如:6<<4,6表示的二进制数向左移动4位。tab
0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
向右移3位 逻辑移位语言
0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
向右移3位 算术移位
0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
三、位操做符:对他们的操做数的各位执行AND、OR、XOR等逻辑操做
AND(&):两个位数都是1,结果为1,不然为0;
OR(|):两个位都是0,结果为0,不然为1;
XOR(^):两个位上的数不一样结果为1,不然为0。
他们要求的操做数为整数类型。
如:
&(与操做符) | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
|(或操做符) | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 1 |
^(异操做符) | 0 | 1 |
0 | 0 | 1 |
1 | 1 | 0 |
四、赋值:把右操做数的值存储于左操数;赋值操做符的求值顺序是从右到左。
如:a=b=c+2 等同于 a=(b=c+2)
复合赋值符:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
上面的复合操做符运算相似于’+=‘操做符。如a+=2等同于a=a+2,a<<=2等同于a=a<<2;
五、单目操做符:只接受一个操做数。它们是:
!:逻辑反操做,操做数为真,结果为0,操做数为假,结果为1;如 :!7=0。
~:对整型类的操做数进行求补操做,操做数中原先为1的为变为0;原先为0的变为。
&:产生它操做数的地址。如 int a,*b; b=&a; &操做符取a的地址赋值给指针变量b。
* :间接访问操做符,与指针一块儿使用,用于访问指针所指向得值。如上面一行的代码,表达式b的值是变量a的地址,但表达式*b的值则是变量a得值
sizeof:判断它操做数的类型长度。
(类型):强制类型转换符,用于显示的把一种类型转换为另一种类型。如:
int a;
(float)a;
把整型变量a转换为浮点型。
+、-:产生操做数的正负值
++、--:操做数的值被增长或减小1。
六、关系操做符:>, >=, <, <=, !=, ==
关系操做符的值是整数,而不是布尔值,他能够赋值给整型变量,一般用于if或while语句中,做为测值表达式
七、逻辑操做符:&&,||
&&操做符的优先级较低,&&操做符老是首先进行左操做数求值,若是值为真,而后紧接着对右操做数进行求值。若是左操做数求值为假,就再也不进行右操做数。||操做符也是先求左操做数,若是为真就不进行右操做符求值。
八、条件操做符:条件操做符接受三个参数;用法以下:
表达式1?表达式2:表达式3
首先计算表达式1的值,为真整个表达式的值为表达式2的值,不计算表达式3的值;为假则为表达式3的值,不计算表达式2的值
九、逗号操做符:用于将两个或多个表达式分隔开来,这些表达式自左向右求值,整个逗号的表达式的值为最后那个表达式的值。用法:
表达式1,表达式2,表达式3,.......表达式n
十、下标引用、函数调用和结构成员
下标引用:经常使用于数组、指针
函数操做符接受一个或多个操做数,第一个操做数是你但愿调用的函数名,剩余的操做数是传递给函数的参数
结构成员: . 和 -> 用于访问一个结构的成员。若是是个结构变量,那么s.a就是访问结构s中名叫a的成员。当遇到一个指向结构的指针,访问他的成员须要用 ->