gpt4 book ai didi

c - 在这种情况下,如何将 double 归因于 int 呢?

转载 作者:太空宇宙 更新时间:2023-11-04 02:20:51 26 4
gpt4 key购买 nike

我刚开始学习 C,但我很难理解为什么下面的代码能正常工作:

void convertMyNumber (float myValue) {
int myNewValue = floor(myValue * 100);
printf("%d", myNewValue);
}

查看 math.h 的文档,指出 floor() 函数接受一个 double 作为参数,并且还返回一个 double 。到目前为止一切顺利,我只是运行上面的代码并输入 576.73 作为 myValue 变量的值。令我惊讶的是,它在屏幕上准确地打印出 57673,我发现很难理解它如何能够归因于 floor 的返回值 函数(一个 double)到 int myNewValue

最佳答案

这一行 int myNewValue = floor(myValue * 100); 包含不少于 3 个隐式转换。

  • myValue * 100中,整型常量100的类型是int。称为“通常的算术转换” 的隐式转换将int 操作数转换为float。乘法在 float 上执行,结果类型为 float。参见 Implicit type promotion rules .

  • 将先前计算的float 结果转换为函数操作数的类型。函数参数被隐式转换“就像通过赋值一样”,将传递的参数转换为参数的类型,在本例中为 double

  • double 的结果通过赋值转换为左操作数 int 的类型。如果 double 包含一个可以用 int 表示的值,则此转换是明确定义的。

这就是它起作用的原因,但是依赖隐式转换通常不是一个好主意,因为意外错误的可能性很大。

关于c - 在这种情况下,如何将 double 归因于 int 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com