1、强制类型转换
#include <stdio.h>
int main()
{
long l = 800;
int i = (int) l;
return 0;
}
目标类型能够容纳目标值,结果不变。
目标类型不能容纳目标值,产生截断。
2、隐式类型转换(只传值,类型不发生改变)
char c = 'a';
int i = c; //c还是char类型,只是把值传给了i
unsigned int j = 0x11223344;
short s = j; //产生截断
printf("sizeof(c+s) = %d",sizeof(c+s)); //4
注:低类型→高类型为安全,高类型→低类型为不安全
菜鸟老师的指导:
1、对 c 的类型转换不会影响 c,只会根据 c 的值得到另一个类型的值,
2、进行算数运算(+、-、*、/
),不同类型必须转化为同一类型才能运算,算术转换原则:
整形提升:对于所有比 int 小的类型,首先提升为 int,比 int 大的统一转换成比 int 大的