有时,您必须将一种数据类型的值转换为另一种类型。这被称为类型转换。
例如,如果您尝试除两个整数,5
经过2
,您期望的结果是2.5
。但由于我们使用的是整数(而不是浮点值),因此以下示例将仅输出2
:
为了获得正确的结果,您需要知道如何类型转换作品。
C语言中有两种类型的转换:
当您将一种类型的值分配给另一种类型时,编译器会自动完成隐式转换。
例如,如果您分配int
值对一个 float
类型:
// Automatic conversion: int to float
float myFloat = 9;
printf("%f", myFloat); // 9.000000
亲自试一试 »
可以看到,编译器自动转换了int值9
为浮点值9.000000
。
这可能存在风险,因为在某些情况下您可能会失去对特定值的控制。
特别是如果是相反的话 - 下面的示例自动转换浮点值9.99
为 int 值9
:
发生了什么事.99
?我们可能希望在我们的程序中使用这些数据!所以要小心。了解编译器在这些情况下如何工作非常重要,以避免出现意外结果。
另一个例子,如果你除两个整数:5
经过2
,你知道总和是2.5
。正如您从本页开头所知道的,如果将总和存储为整数,则结果将仅显示数字2
。因此,最好将总和存储为float
或一个double
, 正确的?
为什么是这样的结果2.00000
并不是2.5
?嗯,这是因为 5 和 2 的除法仍然是整数。在这种情况下,您需要手动将整数值转换为浮点值。 (见下文)。
通过将类型放在括号中来手动完成显式转换()
在值前面。
考虑到上面示例中的问题,我们现在可以获得正确的结果:
// Manual conversion: int to 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
亲自试一试 »
由于您在上一章中了解了"decimal precision",因此您可以通过删除多余的零(如果您愿意)来使输出更加清晰:
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!