数据有不同的类型,不同类型数据之间进行混合运算时涉及到类型的转换问题。
-
转换的方法有两种:
- 自动转换(隐式转换):遵循一定的规则,由编译系统自动完成
- 强制类型转换:把表达式的运算结果强制转换成所需的数据类型
- 语法格式: (类型)变量或常量
-
类型转换的原则:
- 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
- 占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
#include <stdio.h>int main() {// 隐式转换(自动转换):编译器自动转换int a = 11;double b = a; //将a的值,11,转换为11.0000,再给b赋值 printf("b = %lf\n", b);printf("a = %d\n", a);// 强制类型转换,用户转换, (类型)变量或常量int m = 3;int n = 2;b = (double)m/n;printf("b = %lf\n", b);b = (double)3/2;printf("b = %lf\n", b);// 类型转换原则:数据类型小的往数据类型大的转int c = 100;char d = (char)c; //没有问题printf("d = %d\n", d);// 大的往小的转,数据可能会丢失c = 129;d = (char)c;printf("d = %d\n", d);// 小的往大的转long long big = (int)c;printf("big = %lld\n", big);return 0;
}