内容正文:
YCF
(中职)计算机程序设计(C语言)第二章第4节教学课件工信版
1
第2章 数据类型、运算符
及表达式
第4节 不同类型数据间的混合运算
整型和浮点型可以混合运算,字符型与整型又通用,所以整型、实型、字符型间可以混合运算,但需要转换,方法有自动类型转换和强制类型转换两种。
1、自动类型转换
(1)赋值运算中的类型转换
例如:int x;
x=3.14;
x的值是3。当实数赋给整型变量时,自动丢弃小数部分。
(2)混合运算中的类型转换
例如:2*´A´+1.5
不同类型的数据进行混合运算时,C编译系统自动转换,其转换规则:
注意:箭头方向只表示数据类型级别的高低,由低向高转换。
2*´A´+1.5
2*´A´+1.5假定1.5 是float型,那最后结果就是float型,如果1.5是double型,那么最后结果就是double型。
2、强制类型转换
(1)一般形式:
(类型名)(表达式)
例如:(float)x //将x强制转换成float型
(int)(x+y) //将x+y 的值强制转换成int型
注意:表达式要用括号括起来。
(int) x+y //只将x强制转换成int型,然后与y 值相加
(2)强制转换会得到一个所需的中间变量,原来的数据类型并未发生变化。
【例2.18】
#include<stdio.h>
main()
{
float m;
int n;
m=-34.28;
n=(int)m;
printf("%d
",n);
printf("%f
",m);
}
程序运行结果:
-34
-34.280000
3、运算符的优先级与结合性
作为C语言的基础,首先要能正确算出表达式的值。附录3列出的是全部运算符的优先级和结合性规则。同一行具有相同优先级,上一行运算符的优先级高于下一行。同一行的运算符同时出,按结合性规则计算。
4、当表达式中既有自动类型转换又有强制类型转换时,又该如何分析呢?
【例2.19】
#include<stdio.h>
main()
{int x=1;
float y=4.2,z=-9.78,k;
char c='d';
k=(float)x*2+((z>y)&&--x)-(int)(z-12.3)%(c-97);
printf("%f
",k);
printf("%d
",x);}
程序运行结果:
3.000000
1
$