4. 类型转换
4.1 在执行算术运算时,通常要求两个操作数有相同的大小(位数相同),并且存储方式也相同。例如:计算机可以直接将两个16为整数相加,但是不能直接将16位整数和32位整数相加,也不能直接将32位整数和32位浮点数相加。4.2 如果我们一个表达式中混合使用了不同的数据类型,编译器会自动进行类型转换,这种转换叫做隐式转换。
4.3 程序员也可以进行强制类型转换,这种转换称为显示转换。
4.4 下面情况下,可以进行隐式转换:
当算术表达式或逻辑表达式中操作数类型不相同时
赋值运算中两端类型不相同时
函数调用中实参和形参类型不相同时
return 语句和函数的返回值不相同时
4.5 转换原则,小类型自动转换为大类型,整型转换为浮点型
如果任何一个操作数是浮点数的情况:
如果都不是浮点数的情况:
4.6 强制类型转换语法格式
(类型)表达式 例如:float f; int i = (int)f;
#include <stdio.h>
// 算术运算转换
void test1() {
char c;
short int s;
int i;
unsigned int u;
long int l;
unsigned long int ul;
float f;
double d;
long double ld;
// c自动转换为int类型
i = i + c;
// s 自动转换为int类型
i = i + s;
// i 自动转换为unsinged int类型
u = u + i;
// u 自动转换为long int类型
l = l + u;
// l 自动转换为 unsinged long int
ul = ul + l;
// ul 自动转换为float类型
f = f + ul;
// f 自动转换为double类型
d = d + f;
// d 自动转换为long double
ld = ld + d;
}
// 赋值转换
void test2(){
char c;
int i;
float f;
double d;
// c 自动转换为int
i = c;
// i 自动转换为float
f = i;
// f 自动转换为double
d = f;
}
// 强制类型转换
void test3(){
float f = 3.14;
int i = (int)f;
printf("i=%d",i);
}
int main(void) {
//test1();
//test2();
test3();
}
该博客教程视频地址:
原文出处: