运算符分类: 
 
1、   算术运算符:+ - * / 求余(%,也称模运算) ++ -- 
 
2、   关系运算符:> < == >= <= != 
 
3、   逻辑运算符:&& || ! 
 
4、   位运算符:位与 & 位或 | 位非 ! 位异或 ^ 左移 << 右移 >> 
 
5、   赋值运算符:简单运算符=,复合算术运算符:+= -= *= /=,复合位运算符:&=  |=  ^=  >>= <<= 
 
6、   条件运算符:这是一个三目运算符,用于条件求值 ? :,相当于if……else即test?A:B,test非0则A,0则B; 
 
7、   逗号运算符:,用于把若干表达式组合成一个表达式 
 
8、   指针运算符:取内容(*),取地址(&) 
 
9、   求字节运算符:sizeof 
 
10、特殊运算符:() [] 成员-> . 
 
优先级:运算符优先级共15级,1级最高,15级最低 
 
优先级高的先运算,低的后运算,如果运算量两端的运算符优先级相同,则按运算符的结合性所规定的方向处理 
 
结合性:分为两种即左结合性(自左向右)和右结合性(自右向左) 
 
例如:算术运算符结合性为左结合性 
 
赋值运算符为右结合性,如x=y=z,先执行y=z,然后执行x=(y=z) 
 
算术运算符: 
 
+ 加法运算符:为双目运算符,具有左结合性 
 
- 减法运算符:为双目运算符,具有左结合性,如果为负值运算符,则为单目,左结合性 
 
* 乘法运算符:为双目运算符,左结合性 
 
/ 除法运算符:为双目运算符,左结合性,运算中都为整数,结果由舍去小数,结果为整数,如果运算中有实型量,则结果为双精度型,即使结果值(指等号右边)为整型/float/double ,也符合上述原则 
 
% 求余运算符:双目运算符,左结合,要求参与运算的量均为整数,结果为二数相除后的结果 
 
++ --运算符:自增/自减,单目运算符,右结合性,例:++d,d++,运算的结果不是同的,由于其为右结合,所以第一个首先进行自增运算,如果用printf输出,结果为d加1,而后都是先输出结果,然后自增1,还要注意的一点是:printf函数的计算是从右到左进行计算 
 
赋值运算符和赋值表达式 
 
格式:变量=表达式; 
 
赋值运算符为右结合性,x=y=z=5与x=(y=(z=5)))是相同的。 
 
=在C中为运算符,而且组成赋值表达式,凡是表达式出现的地方均可出现赋值表达式,C中规定只要加上分号;即表示形成了语句 
 
在赋值过程中,如果赋值语句两边的数据类型不同,系统将自动进行类型转换,即把赋值符右边的类型转为赋值符左边的类型,规定如下: 
 
1、   实型赋与整型,舍去小数,不进行四舍五入 
 
2、   整型赋与实型,数值不变,但以浮点数形式存放,即增加了小数位数 
 
3、   字符型赋整型,字符型为1个字节,整型为2个字节,所以将字符型的ASCII码放到整型的低8位,高8位以0补齐 
 
4、   整型赋与字符型,字符型为1个字节,整型为2个字节,仅有低8位有效 
 
复合赋值符及表达式 
 
在=左边加上其他的双目运算符即可构成复合赋值符 
 
如+= -= *= /= <<= >>=&= |= %= 等 
 
逗号运算符: 
 
把两个表达式连接起来,组成一个表达式,称为逗号表达式 
 
格式:表达式1,表达式2,求值过程分别求两个表达式的值,并以表达式2的值做为整个逗号表达式的值 
 
y=(x=a+b),(b+c),实际结果为x=a+b,y=a+b,原因是因为逗号表达式的优先级是最低的,如果求逗号表达式的值,应该在外层加上括号,即y=((x=a+b),(b+c)),结果为x=a+b,y=b+c 
 
逗号表达式的特点: 
 
1、   可以嵌套,即表达式1、表达式2都可以是另一个逗号表达式 
 
2、   程序中使用逗号表达式值,通过是要分别求逗号表达式内各表达式的值,并不一定需要整个逗号表达式的值 
 
3、   并非所有出现逗号的地方都组成逗号表达式,如变量说明就非逗号表达式 
 
关系运算符:< > == >= <= != 
 
是双目运算符,左结合,关系运算符优先级低于算术运算符,但高于赋值运算符,其中 < > >= <=优先级相同,==与!=优先级相同,但低于前者 
 
格式:表达式1 关系运算符 表达式2,关系表达式允许嵌套,其值为0或1,例如:k==j==i+5,设k=5,j=4,i=3,计算顺序为:先计算i+5=8,然后比较k==j,返回值为0,然后比较0==i+5,即0==8,最后返回为0 
 
逻辑运算符:有三种 && || ! 
 
前两者为双目运算符,后者为单目运算符 
 
前两者为左结合,后者为右结合 
 
== != > < >= <= 优先级高于&& 和 ||,低于!,算术运算符高于 > < >= <= == !=,但低于! 
 
单目运算符高于多目运算符 
 
逻辑运算符的值: 
 
1、& 都为真(1),为真(1) 
 
2、| 有一个为真(1),为真(1) 
 
3、! 参与量为真(1),返回假(0),参与量为假(0),返回真(1) 
 
逻辑表达式的格式:表达式1 逻辑表达式 表达式2,允许嵌套。 
 |   
        
 
    
    
    
     
 
 |