赋值类型转换
直接举例来说:
当不为a加上‘’时,char类型直接将a的值转化为字符格式
int main()
{
int i=17;
int a=9;
char c;
c=a;
float sum;
sum=i+c;
printf("Value of sum : %f\n", sum );
}
Value of sum : 26.000000
当a加上‘’时,查找a的ascll码然后将相应字符赋值给c
#include <stdio.h>
int main()
{
int i=17;
int a=9;
char c;
c='a';
float sum;
sum=i+c;
printf("Value of sum : %f\n", sum );
}
Value of sum : 114.000000
强制类型转换
#include <stdio.h>
int main()
{
int sum = 17, count = 5;
double mean;
mean = (double) sum / count;
printf("Value of mean : %f\n", mean );
}
Value of mean : 3.400000
这里要注意的是强制类型转换运算符的优先级大于除法,因此 sum 的值首先被转换为 double 型,然后除以 count,得到一个类型为 double 的值。
整数提升
整数提升是指把小于 int 或 unsigned int 的整数类型转换为 int 或 unsigned int 的过程。请看下面的实例,在 int 中添加一个字符:
#include <stdio.h>
int main()
{
int i = 17;
char c = 'c'; /* ascii 值是 99 */
int sum;
sum = i + c;
printf("Value of sum : %d\n", sum );
}
Value of sum : 116
常用的算术转换
常用的算术转换是隐式地把值强制转换为相同的类型。编译器首先执行整数提升,如果操作数类型不同,则它们会被转换为下列层次中出现的最高层次的类型:
对于 char 和 short 类型,进行运算时将会被隐式转换为 int