友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
86读书 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

c语言设计-第5章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



换。自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以
下规则:
1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2) 转换按数据长度增加的方向进行,以保证精度不降低。如 int 型和 long 型运算时,
先把 int 量转成 long 型后再进行运算。
3) 所有的浮点运算都是以双精度进行的,即使仅含 float 单精度量运算的表达式,也
要先转换成 double 型,再作运算。
4) char 型和 short 型参与运算时,必须先转换成 int 型。
5) 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为
左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样
会降低精度,丢失的部分按四舍五入向前舍入。
下图表示了类型自动转换的规则。
double
long
unsigned

【例 3。12】
main(){
  float PI=3。14159;
  int s;r=5;
    s=r*r*PI;
  printf(〃s=%dn〃;s);

int

char;short






谭浩强      C 语言程序设计               2001 年 5 月 1 日

本例程序中,PI 为实型;s,r 为整型。在执行 s=r*r*PI 语句时,r 和 PI 都转换成 double
型计算,结果也为 double 型。但由于 s 为整型,故赋值结果仍为整型,舍去了小数部分。
强制类型转换
强制类型转换是通过类型转换运算来实现的。
其一般形式为:
        (类型说明符)  (表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
        (float) a            把 a 转换为实型
                (int)(x+y)          把 x+y 的结果转换为整型
在使用强制转换时应注意以下问题:
1) 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成
(int)x+y 则成了把 x 转换成 int 型之后再与 y 相加了。
2) 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进
行的临时性转换,而不改变数据说明时对该变量定义的类型。
【例 3。13】
main(){
  float f=5。75;
  printf(〃(int)f=%d;f=%fn〃;(int)f;f);


本例表明,f 虽强制转为 int 型,但只在运算中起作用,是临时的,而 f 本身的类型并不
改变。因此,(int)f 的值为 5(删去了小数)而 f 的值仍为 5。75。
3。8 算术运算符和算术表达式
C语言中运算符和表达式数量之多,在高级语言中是少见的。正是丰富的运算符和表达
式使C语言功能十分完善。这也是C语言的主要特点之一。
C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达
式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合
性的制约,以便确定是自左向右进行运算还是自右向左进行运算。这种结合性是其它高级语
言的运算符所没有的,因此也增加了C语言的复杂性。
3。8。1 C 运算符简介
C语言的运算符可分为以下几类:
1。 算术运算符:用于各类数值运算。包括加(+)、减(…)、乘(*)、除(/)、求余(或称模运算,%)、
自增(++)、自减(……)共七种。
2。 关系运算符:用于比较运算。包括大于(》)、小于(=)、小于等


于(》=;
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!