C语言中数据的强制转换

来源:互联网 发布:淘宝福尔摩斯探案全集 编辑:程序博客网 时间:2024/05/16 19:06

数据的强制转换分为两种:1.隐性转换

                        2.显性转换

以下为数据类型及其所占字节:

数据类型
bool:1字节。0,1
int :4字节
char:1字节
float:4字节
double:8字节
short:2字节
long:4字节
long long :8字节
sizeof();一般用此函数求的数据类型的长度如:sizeof(int)=4;

转换一般由低转换到高。

1.关于隐性转换

如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:
1) 实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况。
2) 整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。
3)字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量

如:

【1】float a=0;

int b=1,c=1;

a=b+c;

结果:2.000000

将b+c的结果转换成浮点型
【2】float b=1.8;

int a=0,c=1;

a=b+c;

运行结果:a=2;

此时把整形的c先转化成浮点型的数据与b进行运算,再把浮点型的数舍去小数部分转化成整形;

【3】

char a='a';

int b=65;

printf("%c%d",b,a);

结果:97A

将整形b转化成字符型对应的ascii码的字符为A,将字符型a 转化成整形对应‘a’的ascii码为65;

2.显性转化:

【1】

int a=2,b=0,c=5;

float c=3.2,d=4.7,e=0;

b=(int)(c+d);

结果:b=7(舍尾)

将c+d的结果强转成整形赋给b

【2】

int a=2,b=0,c=5;

float c=3.2,d=4.7,e=0;

e=(float)c/a;

e=2.500000;先将c强制转化成整形,与a运算

若e=c/a;此时的结果为2.000000;因为c与a都为整形,整形间的运算结果为整形;

0 0
原创粉丝点击