黑马程序员技术交流社区
标题:
运算符分类
[打印本页]
作者:
yqzh
时间:
2015-8-8 05:38
标题:
运算符分类
运算符分类:
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,允许嵌套。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2