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;
}
运行结果:
注意说明:
●表达式应该用括号括起来。
●进行强制类型转换时,得到的是一个所需类型的中间变量,原来变量的类型并未发生改变
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。