A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yqzh 中级黑马   /  2015-8-8 05:38  /  651 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运算符分类:

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,允许嵌套。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马