happypzl

C语言基础(二)数据运算及类型转换规则

 
C语言基础(二)数据运算及类型转换规则
 
 

21 运算符和表达式

C语言中有丰富的运算符:赋值运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符等

表达式是由运算对象和运算符组合起来的式子,且必须符合C语言的语法规则

表达式求值时应根据运算符的优先级和结合性

211赋值运算符及赋值表达式

赋值运算符:=

赋值表达式:变量 = 表达式 [由赋值运算符连接的式子,把右边表达式的值赋给左边的变量]

例如:

   int i, j, k;

    i= 0;

    j =i +1;

说明:赋值运算符具有右结合性,表达式可以连续赋值。

例如:i = j = k 就等价于 j = k; i = j;这两条语句。

212算术运算符及算术表达式

C语言提供了如下算术运算符:加(+)、减或取负(-)、乘(*)、除(/)、取模或求余(%)、自增(++)和自减(――)7种。

算术表达式:由算术运算符连接起来的表达式称为算术表达式。

其中加(+)、减或取负(-)、乘(*)三种运算和一般数学中的运算规则一样;

除(/):当除数和被除数都是整型数据时,其结果只能是整型。

例如:7/2=3;而不是 7/2=3.5;[只有当除数或被除数中有一个是实型时,其结果才是实型]

取模或求余(%):只能对整型数据进行运算。

自增(++)和自减(――):

1)只能对简单变量类型进行运算,常量和表达式不能做这两种运算。

如5――,(xy)++都是不合法的;

2)既可以出现在变量的右边,又可以 出现在变量的左边。必须注意它们的差别:

x++:在使用变量x之后再将x的值加1;

++x:在使用变量x之前先将x的值加1;

x――:在使用变量x之后再将x的值减1;

――x:在使用变量x之前先将x的值减1;

例如:int x = 1,y;

      y = ++x;

      printf(“\nx=%d,y=%d”,x,y);

运行结果是:

    x = 2,y = 2

213关系运算符及关系表达式

C语言中有如下关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(= =)、不等于(!=

关系表达式:用关系运算连接几来的式子。

说明:

1)关系运算就是通过对操作数的值进行比较来判定是否符合条件,所以,关系表达式的结果只有两种即“真”和“假”,其中“真”用“1”表示、“假”用“0”表示。

  2)一般字符的比较依据为字符的ASCII码。

例如:int a=(>); 结果:a=

214逻辑运算符及逻辑表达式

C语言提供了3种逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!)。

逻辑表达式:用逻辑运算符连接起来的式子。

说明:

1)逻辑与(&&)、逻辑或(||)是双目运算,具有左结合性,逻辑非(!)是单目运算符,具有右结合性。

2)在逻辑表达式中,是根据形式逻辑的原理,通过逻辑运算符来对操作数的“真”(即非0值)“假”(即0值)值进行组合,其结果仍为逻辑“真”或“假”。

3)逻辑运算符的求值规则:

  i      j         i&&j            i|| j            !i

 非0  非0    1      1      0

 非0  0     0      1      0

 0   非0    0      1      1

 0   0     0      0      1

 

    例如:int m = 2, n = 3;

m&&n的值为1;

m | | n的值为1

m的值为0。

215条件运算符及条件表达式

条件运算符:?:

它是C语言中唯一的一个三目运算符,用来对条件求值,具有右结合性。

条件表达式:用条件运算符连接起来的式子。

其形式如下:

   表达式1?表达式2:表达式3

运算规则:先计算表达式1,如果结果为真,则计算表达式2,并把表达式2的值作为整个表达式的值。否则,如果表达式1的值为假,则计算表达式3,并把表达式3的值作为整个表达式的值。

例如:要得到变量ab之间的最小值,可以表示成:

   min = (a < b) ? a : b; //如果a < b,则mina,否则a>=b,则minb

216逗号运算符及逗号表达式

逗号表达式是用逗号(,)把多个表达式连接起来组成一个表达式,求值时按从左到右的顺序。其形式为:

表达式1,表达式2,……,表达式n

执行过程为:先对表达式1求值,再对表达式2求值,……再对表达式n求值,并把表达式n的值作为整个逗号表达式的值。

优先级:逗号运算符在所有运算符中的优先级最低,具有从左到右的结合性。

特别说明:逗号并不是在任何地方出现都是逗号表达式,它也可以作为分隔符,要注意分清。

2.2运算符的优先级和结合性

[当一个表达式由多个运算符组成时,如何能得到正确结果,这就是运算符的优先级和结合性问题]

2.2.1数据类型转换规则

[不同的基本数据类型的变量混合运算时,怎样确定该表达式的数据类型,这就是如何进行类型转换的问题]

数据类型转换分自动转换和强制转换两类。

1)自动转换:这类转换由C编译系统自动完成;其原则是保证数据的精度不降低,所以,数据转换按数据存储长度增长的方向进行。

2)强制转换:将结果转换为自己所希望的数据类型。形式为:

(类型名)(表达式)——即可将表达式的类型转换为指定的(类型名)

说明:强制转换只对本次运算有效,并不改变变量本身定义时所规定的类型。

例如:float x = 4;

      int y = 2;

    进行运算:(intx / y 其结果为2;但运算后x的类型仍为实型,而不会变成int型。
[声明:本资源来自网络,如有侵权,请告知!]

posted on 2007-07-27 23:45 蓝天 阅读(2390) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

<2007年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

统计

常用链接

留言簿(1)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜