1、什么叫做主动类型转换?
规定:
(1)若参加运算量的类型不同,则先转换成同 类型,而后进行运算。
(2)转换按数据长度减少的方向进行,以保障精度不升高。如 int 型和 lbng 型运算时,
先把 int 量转成 long 型后再进行运算。
(3)所有的浮点运算都是以双精度进行的,即便仅含 float 单精度量运算的表达式,也要
先转换成 double 型,再作运算。
(4)char 型和 short 型参加运算时,必须先转换换成 int 型。
举个栗子
假如已指定 i 为整型变量,f 为 float 型变量,d 为 double 型变量,e 为 long 型变量,表达式为:10+’a’4i*f-d/e,则表达式的运行秩序?
运行程序:
第一步运行: i*f
第二步运行: d/e
第三步运行: 10+’a’
第四步运行: 10+’a’+i*f
第五步运行: 10+’a’+i*f–d/e
语句编写:
#include<stdio.h>
int main()
{
int i=2;
float f=1.5;
double d=4.0;
long e=2;
printf("i*f=%f,i 转化为 float 类型参加运算",i*f);
printf("d/e=%lf,e 转化为 double 类型参加运算",d/e);
printf("10+'a'=%d,'a'转化为 int 类型参加运算",10+'a');
printf("10+'a'+i*f=%f,int 转化为 float 类型",10+'a'+i*f);
printf("10+'a'+i*f-d/e=%lf.float 转化为 double 类型",10+'a'+i*f-d/e);
return 0;
}
运行后果:
2、强制类型转换如何应用?
个别模式
(类型说明符)(表达式)
举个栗子:
(double)a 将变量 a 强制转换为 double 类型
(int)(x+y)将 x + y 的值强制转换为 int 类型
(float)(5%3)将 5%3 的值强制转换为 float 类型
(float) x/y 将 x 强制转换成 float 类型后,在参加运算
语句编写:
#include<stdio.h>
int main()
{
float f;
f=9.8;
printf("(int)f=%d,f=%f\n",(int)f,f);
return 0;
}
运行后果:
留神阐明:
●表达式应该用括号括起来。
●进行强制类型转换时,失去的是一个所需类型的两头变量,原来变量的类型并未产生扭转