在c语言中不同类型的数据是可以进行转换的,比如char能转换为int类型。
C语言的类型转换分两种:
1.强制类型转换。
2.隐式类型转换。
强制类型转换的语法:
(type)var_name;
(type)value;
强制类型转换的结果:
1,目标类型能容纳该类型值,则结果不变;
2,目标类型不能容纳该类型值,则结果发生截断。;
代码如下
//强制类型转换,能容纳,结果不变
char c = 10;
int i = (int)c;
printf("%d\n", i);
//强制类型转换,不能容纳,发生截断
double d = 1.2;
int i1 = (int)d;
printf("%d\n", i1);
隐式类型转换
编译器主动进行的类型转换
比如:
char c=1;
short s = c;
int i = s ;
long l = i;
注意:
隐式类型转换,低类型转换为高类型是安全的不会发生截断;
而高类型转换为低类型是不安全的会发生截断,造成不安全的结果;
隐式类型转换发生的地方:
1.算术表达式中,低类型转换为高类型
2.赋值表达式中,表达式的值转换为左边变量的类型
3.函数调用时,实参转换为形参类型
4函数返回值,return 表达式转换为返回值类型
安全的类型转换如下
注意
在算术运算时,低类型会自动转换为高类型;
2.如char, short 这些类型进行算术运算是,会进行整型提升,提升为int或unsigned int long 等等的整型类型中的最小类型。前提只要转换后的类型能容纳原类型所有值。
学习交流群199546072