一、强制数据类型转换举例
1.1 double赋值给int
#include<stdio.h>
int main()
{
double sum = 18, count = 5;
int mean;
mean = sum / count;
printf("Value of mean : %d\n", mean);
}
执行结果:
double赋值给int,会发生数据溢出,导致数据丢失
1.2 未进行强制数据类型转换
#include<stdio.h>
int main()
{
int sum = 18, count = 5;
double mean;
mean = sum / count;
printf("Value of sum / count : %d\n", (sum / count));
printf("Value of mean : %f\n", mean);
}
执行结果:
未进行类型强制转换,整型赋值给double,结果为double
1.3 进行强制数据类型转换
#include<stdio.h>
int main()
{
int sum = 18, count = 5;
double mean;
mean = (double)sum / count;
printf("Value of sum / count : %d\n", (sum / count));
printf("Value of mean : %f\n", mean);
}
执行结果:
强制转为double,输出正确结果
二、整数提升
整数提升是指把小于 int 或 unsigned int 的整数类型转换为 int 或 unsigned int 的过程
#include<stdio.h>
int main()
{
int i = 17;
char c = 'c';
int sum;
sum = i + c; /* c是char类型,1个字节;sum是int类型,4个字节*/
printf("value of sum:%d\n", sum);
}
执行结果:
编译器进行了整数提升,在执行实际加法运算时,把 'c' 的值转换为对应的 ascii 值