类型转换(第 1 部分)
本课属于 Coddy C 学习旅程的“基础知识”单元。第 13 课,共 63 课。
C 中的类型转换可以将一个值从一种数据类型转换为另一种数据类型。当你需要对不同数据类型进行运算时,这很有用。
类型转换主要有两种:
- 隐式转换(自动)
- 显式转换(手动)
我们先从隐式类型转换开始:
隐式类型转换会自动发生,例如,当你将较小数据类型的值赋给较大数据类型的变量时:
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。由于转换可能会丢失数据,写出类型转换可以让这一点更明显,也能告诉编译器你知道可能会丢失数据。
挑战
简单编写一个程序:
- 声明一个 double 变量
result,并将其设为 5.65 - 声明一个 int 变量
grade - 使用显式类型转换,将
result的值赋给grade - 使用 printf 和消息 "The grade is: " 打印
grade的值
亲手试试
double result = 5.65;
int grade;
// 使用显式类型转换,将 result(double)转换为 grade(int)
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: C 在线编译器