11. 类型转换运算符
隐式类型转换
隐式类型转换是编译器按着默认规则将数据类型进行转换,如:
float pi = 3.14159
int x = pi; // 隐式将浮点数转化为整数。
在隐式类型转换过程中,小数转为整数会丢失小数部分,整型转为更小的整型数时会丢失高位字节。如:
int x = 258;
unsigned char uc = x; // 丢失高位的3个字节。
printf("%d\n", uc); // 打印 2
类型转换运算符
类型转换运算符(也称为 强制类型转换)用于显式地将一种数据类型转换为另一种数据类型。它允许程序员手动控制类型转换的过程,避免编译器隐式转换可能带来的负面问题(如精度丢失等)。
语法
(类型) 表达式
示例
#include <stdio.h>
int main(int argc, char *argv[]) {
int number = 5;
float error_result = number / 2; // 整数相除类型为整数。
float result = (float)number / 2; // 浮点数和整数相除,类型为浮点数。
printf("error_result: %f\n", error_result);
printf("result: %f\n", result);
return 0;
}
运行结果
error_result: 2.000000
result: 2.500000
练习:
如何修改以下代码,使得 result 的值为 3.5(而不是 2.0)?
int a = 7, b = 2;
float result = a / b;
选择:( )
- A) float result = (float)a / b;
- B) float result = a / (float)b;
- C) float result = (float)(a / b);
- D) float result = (float)a / (float)b;