C语言
类型转换
1.类型自动转换
float型数据自动转换成double型;
char与short型数据自动转换成int型;
int型与double型数据运算,直接将int型转换成double型
int型与unsigned型数据、直接将int型转换成unsigned型;
int型与long型数据,直接将int型转换成long型。
————————————————
例:
char ch='a’
int i=13:
float x=3.65;
double y=7.528e-6;
求:i+ch+x*y
先将ch转换成int型,计算i+ch,由于ch=‘a’,而‘a’的ASCH码值为97,故计算结果为110,类型为int型。
再将x转换成double型,计算x*y,结果为double类型。
最后将i+ch的值110转换成double型,表达式的值最后为double类型。
2.赋值转换
#include<stdio.h>
#include<windows.h>
#include<math.h>
void main(){
char ch='A';//定义字符型变量,并赋初值‘A’
int a,b=3,c;//定义整型变量,并给变量b赋初值3
float x1,x2=2.5;//定义单精度浮点型变量
a=ch;//将字符型变量ch的值'A'赋给整型变量a
x1=a;
c=x2;//x2的值2.5赋给整型变量c
printf("%4c,%4d,%6.2f,%4d\n", ch,a,x1,c);//输出变量ch、a、x1和c的值getchar();
}
结果:A 65 65.00 2
第一个输出数据是字符变量ch的值字符’A’;第二个输出数据是整型变量a的值65,字符’A’的ASCII码转换成32位的整型数据;第三个输出数据是实型变量xl的值65.00,由int型变量a的值65自动转换成float类型;第四个数据是整型变量c的值,由实型变量x2的值2.5自动转换成整型数2。
3.强制类型转换
int a=7,b=2;
float y1,y2;
float y1=a/b;/*y1的值a/b为3.0*/
y2=(float)a/b;/*y2的值为3.5,float将a进行强制转换为实型,b也随之自动转换为实型*/
(int)(x+y)和(int)x+y强制类型转换的对象是不同的。(int)(x+y)是对x+y进行强制类型转换;而(int)x+y则只对x进行强制类型转换。