显式类型转换
手动转换
显式类型转换 是 CoddyKit 上的免费 C Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C Academy 课程共包含 4 节课。
什么是强制类型转换
强制类型转换使用 (type)value 将值显式转换为另一种类型。它会明确告诉编译器您的意图。
#include <stdio.h>
int main(void) {
double d = (double)5;
printf("%.1f\n", d);
return 0;
}强制进行实数除法
将一个操作数强制转换为 double,这样除法就能保留小数部分。
#include <stdio.h>
int main(void) {
int a = 7, b = 2;
double r = (double)a / b;
printf("%.2f\n", r);
return 0;
}有意进行截断
将 double 强制转换为 int 会丢弃小数。有时这正是您想要的结果。
#include <stdio.h>
int main(void) {
double price = 19.95;
int dollars = (int)price;
printf("dollars = %d\n", dollars);
return 0;
}强制类型转换与隐式转换
隐式转换会自动发生;强制类型转换则能记录意图并消除警告。
#include <stdio.h>
int main(void) {
long big = 100000L;
int n = (int)big;
printf("n = %d\n", n);
return 0;
}表达式中的强制类型转换
强制类型转换只应用于紧邻它的值,因此顺序和括号很重要。
#include <stdio.h>
int main(void) {
int total = 5, count = 2;
double avg = (double)total / count;
printf("avg = %.2f\n", avg);
return 0;
}char 与 int 的强制类型转换
您可以在 char 和 int 之间进行强制类型转换,以在字符及其编码之间转换。
#include <stdio.h>
int main(void) {
int code = 66;
char c = (char)code;
printf("c = %c\n", c);
return 0;
}使用强制类型转换进行四舍五入
在强制转换前加上 0.5,可以将正数四舍五入到最接近的整数。
#include <stdio.h>
int main(void) {
double d = 2.7;
int rounded = (int)(d + 0.5);
printf("rounded = %d\n", rounded);
return 0;
}转换为 unsigned
您可以转换为 unsigned,但负值会回绕为一个很大的正数。
#include <stdio.h>
int main(void) {
int x = 10;
unsigned int u = (unsigned int)x;
printf("u = %u\n", u);
return 0;
}避免不必要的强制类型转换
如果转换本来就安全且会隐式进行,再添加强制类型转换只会增加干扰。请在能够明确意图或确有必要时使用强制类型转换。
#include <stdio.h>
int main(void) {
int a = 4;
double d = a;
printf("%.1f\n", d);
return 0;
}公式中的强制类型转换
在百分比计算中使用强制类型转换,可以保持结果的精确度。
#include <stdio.h>
int main(void) {
int done = 3, total = 8;
double pct = (double)done / total * 100.0;
printf("%.1f%%\n", pct);
return 0;
}与数学函数结合使用强制类型转换
将整数值传入浮点数学运算时,强制类型转换会很有帮助。
#include <stdio.h>
int main(void) {
int n = 9;
double root = (double)n / 3.0;
printf("%.2f\n", root);
return 0;
}快速检查
测试您对显式强制类型转换的理解。
回顾:显式强制类型转换
您已学会有意地转换类型。
- 语法是
(type)value - 强制转换以进行真正的除法
- 有意进行强制转换以截断
- 强制类型转换可以记录意图并消除警告
- 强制类型转换只影响相邻的值,因此请使用括号
常见问题解答
「显式类型转换」课时是免费的吗?
是的 — 「显式类型转换」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C Academy 课程的其余内容,请升级到 CoddyKit PRO。 C Academy 课程共包含 4 节课。
「显式类型转换」这节课中我会学到什么?
手动转换 你通过在浏览器中直接运行的动手代码来练习 C Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 C Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 C Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「显式类型转换」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 C Academy 课中编写并运行代码吗?
能。每节 C Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。