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;

选择:( )