Menu
CoddyTech

类型转换(第 1 部分)

本课属于 Coddy C 学习旅程的“基础知识”单元。第 13 课,共 63 课。

C 中的类型转换可以将一个值从一种数据类型转换为另一种数据类型。当你需要对不同数据类型进行运算时,这很有用。

类型转换主要有两种:

  1. 隐式转换(自动)
  2. 显式转换(手动)

我们先从隐式类型转换开始:

隐式类型转换会自动发生,例如,当你将较小数据类型的值赋给较大数据类型的变量时:

int num = 10;
double decimal_num;

// 从 int 到 double 的隐式类型转换
decimal_num = num;

执行上面的代码后,decimal_num 的值为 10.0

这种转换是安全的,因为 double 可以存储 int 的所有可能值,而不会丢失任何数据。

常见的隐式类型转换路径:

  • char → int → long → float → double

从 long 转换为 float 时可能会损失精度:float 无法准确存储每一个 long,因此 123456789 会变成 123456792.0。

现在我们来看看显式类型转换:

显式类型转换是手动完成的,方法是在要转换的值前面用括号括起目标数据类型。将较大的数据类型转换为较小的数据类型时,请使用它,因为这可能导致数据丢失:

double decimal_num = 5.65;
int num;

// 将 double 显式转换为 int
num = (int)decimal_num;

执行上述代码后,num 的值将为 5

注意,从 double 转换为 int 时,小数部分会被截断(而不是四舍五入)。显式类型转换的语法是:

(target_type) value

即使不进行类型转换,C 也会执行这种转换:num = decimal_num; 得到的结果也是 5。由于转换可能会丢失数据,写出类型转换可以让这一点更明显,也能告诉编译器你知道可能会丢失数据。

challenge icon

挑战

简单

编写一个程序:

  1. 声明一个 double 变量 result,并将其设为 5.65
  2. 声明一个 int 变量 grade
  3. 使用显式类型转换,将 result 的值赋给 grade
  4. 使用 printf 和消息 "The grade is: " 打印 grade 的值

亲手试试

    double result = 5.65;
    int grade;
    
    // 使用显式类型转换,将 result(double)转换为 grade(int)
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: C 在线编译器