正在加载图片...
靳润昭C语言教程讲义 2001年2月17日 int a=3.b.=5 printf("a=%d, b=%d, c=%d\n", a, b, c) 37各类数值型数据之间的混合运算 变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转 换。自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以 下规则 I)若参与运算量的类型不同,则先转换成同一类型,然后进行运算 2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时, 先把int量转成long型后再进行运算 3)所有的浮点运算都是以双精度进行的,即使仅含foat单精度量运算的表达式,也 要先转换成 double型,再作运算 4)char型和 short型参与运算时,必须先转换成int型。 5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为 左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这 会降低精度,丢失的部分按四舍五入向前舍入。 下图表示了类型自动转换的规则。 double ng ensign charshort 【例3.12】 float Pl=3.14159 sr*rPl: 第14页靳润昭 C 语言教程讲义 2001 年 2 月 17 日 第14页 { int a=3,b,c=5; b=a+c; printf("a=%d,b=%d,c=%d\n",a,b,c); } 3.7 各类数值型数据之间的混合运算 变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转 换。自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以 下规则: 1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 2) 转换按数据长度增加的方向进行,以保证精度不降低。如 int 型和 long 型运算时, 先把 int 量转成 long 型后再进行运算。 3) 所有的浮点运算都是以双精度进行的,即使仅含 float 单精度量运算的表达式,也 要先转换成 double 型,再作运算。 4) char 型和 short 型参与运算时,必须先转换成 int 型。 5) 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为 左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样 会降低精度,丢失的部分按四舍五入向前舍入。 下图表示了类型自动转换的规则。 【例 3.12】 main(){ float PI=3.14159; int s,r=5; s=r*r*PI; int char,short double long unsigned
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有