类型的转换过程:
float ---> int 舍弃小数 取整操作
int ---> float 整型(精确类型) 小数(非精确类型) 精度会丢失
int ---> char 溢出部分舍弃 宽存储空间 转换为 小存储空间
int ---> short
小存储空间 转换为 宽存储空间 不影响
整型与浮点型 参与运算时 隐式类型转换 会统一转换为浮点型计算
有符号数 无符号数 强制类型转换时 存储内容 完全没有改变 但影响计算
#include <stdio.h>
//类型的转换
int main()
{
int a;
float f = 2.5;
a = f; //隐式类型转换
a = (int)f; //强制类型转换
printf("a=%d\n",a);
printf("f=%f\n",f);
char c;// 仅C99标准允许
a = 5;
c = a;
printf("c=%d\n",c);
a = 10;
f = 2.5;
c = (char)(a + (int)f + (int)1.7);//强制类型转换
printf("c=%d\n",c);
unsigned char uc = 128;
signed char sc = uc;
printf("uc=%d,sc=%d\n", uc,sc);
printf("uc=%d,sc=%d\n", uc,(unsigned char)sc);
a = -1;
printf("a=%u\n", a)//%u 输出整型无符号数 以10进制方式显示
unsigned int b = a;
printf("b=%u\n", b);//%u 输出整型无符号数 以10进制方式显示
a = (int)uc + (int)sc; // a = uc + sc;
//a = uc + (unsigned char)sc;
//a = (signed char)uc + sc;
printf("a=%d\n", a);
return 0;
}