一、分类
C语言一共有34种运算符,10种运算类型:算术运算符、关系运算符、位运算符、逻辑运算符、条件运算符、指针运算符、赋值运算符、逗号运算符、求字节运算符(sizeof)、强制类型转换运算符((类型名))、其他(下标[]、分量、函数);若按参与运算的对象个数,C语言运算符可分为单目运算符、双目运算符和三目运算符。
二、运算符的结合性和优先级
1. 运算符的结合性
在C语言的运算符中,所有的单目运算符、条件运算符、赋值运算符及其扩展运算符,结合方向都是从右向左,其余运算符的结合方向是从左向右。
2.运算符的优先级
初等运算符(圆括号()、下标运算符[]、结构体成员运算符->)>单目运算符>算术运算符(先乘除后加减)>关系运算符>逻辑运算符(不包括!)条件运算符>赋值运算符>逗号运算符
口诀注释:
优先级等级口诀
圆方括号、箭头一句号, 自增自减非反负、针强地址长度,
乘除,加减,再移位,
小等大等、等等不等,
八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。
其中“,”号为一个等级分段。
三、十种运算类型
1、算术运算符
+(加号) 加法运算 (3+3)
–(减号) 减法运算 (3–1) 负 (–1)
*(星号) 乘法运算 (3*3)
/(正斜线) 除法运算 (3/3)
%(百分号) 求余运算10%3=1
2、 关系运算符
名称 示例 功能
<(小于) a<b a小于b时返回真;否则返回假
<=(小于等于) a<=b a小于等于b时返回真;否则返回假
>=(大于) a>b a大于b时返回真;否则返回假
>=(大于等于) a>=b a大于等于b时返回真;否则返回假
!=(不等于) a!=b a不等于b时返回真;否则返回假
3、位运算符
&(按位与) //相同位的两个数字都为1,则为1;若有一个不为1,则为0
|(按位或) //相同位只要一个为1即为1
^(按位异或) //相同位不同则为1,相同则为0。
~(按位取反)
<<(左移) //和右移都要转换成二进制
>>(右移)
4、逻辑运算符
&&(逻辑与)
||( 逻辑或)
! (逻辑非)
5、条件运算符
exp1 ? exp2 : exp3
/*
表达式为:表达式1?表达式2:表达式3
先求解表达式1,
若其值为真(非0)则将表达式2的值作为整个表达式的取值,
否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。*/
6、指针运算符
&运算符:取地址运算符 //&m即是变量m在内存中的实际地址。
*运算符:指针运算符 //它返回其操作数(即一个指针)所指向的对象的值.
7、赋值运算符
=(赋值运算符) //他的优先级别低于其他的运算符,所以对该运算符往往最后读取。
++(自加)
--(自减)
+=、-=、*=、/=、和%=等。 //符合运算符
8、逗号运算符
逗号运算符是指在C语言中,多个表达式可以用逗号分开,
其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
9、求字节运算符(sizeof)
1.sizeof()的作用是用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
2.基本形式:
(1)sizeof( 变量\常量 );
(2)sizeof 变量\常量;
(3)sizeof( 数据类型 )
(4)注意其形式没有sizeof 数据类型
10、强制类型转换运算符
C中显式强制类型转换很简单,格式如下:
TYPE b = (TYPE) a;
其中,TYPE为类型描述符,如int,float等。经强制类型转换运算符运算后,
返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,
运算后操作数本身未改变,
11、其他(下标[]、分量、函数)
下标[]运算符,一般形式a[i],即*(a+i)。