0Pricing
C Academy · 课时

显式类型转换

手动转换

显式类型转换 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 隐式转换
  2. 显式类型转换
  3. 整数与浮点数转换
  4. 转换陷阱
← 返回 C Academy