类型转换

收藏429

阅读1437

更新时间2025-08-05

类型转换

有时,您必须将一种数据类型的值转换为另一种类型。这被称为类型转换

例如,如果您尝试将两个整数 52 相除,您期望的结果应该是 2.5。但由于我们处理的是整数(而不是浮点值),因此以下示例只会输出 2

实例

int x = 5;
int y = 2;
int sum = 5 / 2;

printf("%d", sum); // 输出 2
运行实例 »

点击 "运行实例" 按钮查看在线实例

要获得正确的结果,您需要了解类型转换的工作原理。

C 语言中有两种类型的转换:

  • 隐式转换(自动)
  • 显式转换(手动)

隐式转换

当您将一种类型的值分配给另一种类型时,编译器会自动进行隐式转换。

例如,如果将 int 值分配给 float 类型:

实例

// 自动转换:int 转 float
float myFloat = 9;

printf("%f", myFloat); // 9.000000
运行实例 »

点击 "运行实例" 按钮查看在线实例

如您所见,编译器自动将 int9 转换为 float9.000000

这可能存在风险,因为在某些情况下您可能会失去对特定值的控制。

特别是如果反过来 - 以下示例自动将浮点值 9.99 转换为 int9

实例

// 自动转换:float 转 int
int myInt = 9.99;

printf("%d", myInt); // 9
运行实例 »

点击 "运行实例" 按钮查看在线实例

.99 去哪儿了?我们可能需要在程序中使用该数据!所以要小心。了解编译器在这些情况下的工作方式很重要,以避免出现意外的结果。

再举一个例子,如果将两个整数 5 除以 2,则总和为 2.5。从本页开始您就知道,如果将总和存储为整数,结果将仅显示数字 2。因此,最好将总和存储为浮点型或双精度型,对吗?

实例

float sum = 5 / 2;

printf("%f", sum); // 2.000000
运行实例 »

点击 "运行实例" 按钮查看在线实例

为什么结果是 2.00000 而不是 2.5?嗯,这是因为 52 的除法仍然是整数。在这种情况下,您需要手动将整数值转换为浮点值。(见下文)。

显式转换

显式转换是通过将类型放在值前面的括号 () 中来手动完成的。

考虑到上面示例中的问题,我们现在可以获得正确的结果:

实例

// 手动转换:int 到 float
float sum = (float) 5 / 2;

printf("%f", sum); // 2.500000
运行实例 »

点击 "运行实例" 按钮查看在线实例

您还可以将类型放在变量前面:

实例

int num1 = 5;
int num2 = 2;
float sum = (float) num1 / num2;

printf("%f", sum); // 2.500000
运行实例 »

点击 "运行实例" 按钮查看在线实例

由于您在前一章中学习了“小数精度”,因此您可以通过删除多余的零(如果您喜欢的话)来使输出更加整洁:

实例

int num1 = 5;
int num2 = 2;
float sum = (float) num1 / num2;

printf("%.1f", sum); // 2.5
运行实例 »

点击 "运行实例" 按钮查看在线实例

现实生活中的例子

以下是一个关于数据类型和类型转换的真实示例,我们创建一个程序来计算用户得分与游戏中最高得分的百分比:

实例

// 设置游戏中可能的最高得分为 500
int maxScore = 500;

// 用户的实际评分
int userScore = 420;

/* 计算用户得分与最高可用得分的百分比
将userScore转为float,确保除法准确 */
float percentage = (float) userScore / maxScore * 100.0;

// 打印百分比
printf("User's percentage is %.2f", percentage);
运行实例 »

点击 "运行实例" 按钮查看在线实例

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.9万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.4万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

71.1万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.8万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

34万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号