gpt4 book ai didi

c - 将 int 和 const int 转换为 float 时的不同结果

转载 作者:行者123 更新时间:2023-12-04 20:04:11 25 4
gpt4 key购买 nike

谁能解释为什么 int 和 const int 给出不同转换为 float 并用于 float 学时的结果?看例如这段代码:

int _tmain(int argc, _TCHAR* argv[])
{
int x = 1000;
const int y = 1000;
float fx = (float) x;
float fy = (float) y;

printf("(int = 1000) * 0.3f = %4.10f \n", 0.3f*x);
printf("(const int = 1000) * 0.3f = %4.10f \n", 0.3f*y);
printf("(float)(int = 1000) * 0.3f = %4.10f \n", 0.3f*fx);
printf("(float)(const int = 1000) * 0.3f = %4.10f \n", 0.3f*fy);
return 0;
}

结果是:

(int = 1000) * 0.3f = 300.0000119209
(const int = 1000) * 0.3f = 300.0000000000
(float)(int = 1000) * 0.3f = 300.0000119209
(float)(const int = 1000) * 0.3f = 300.0000119209

我的猜测是在第一种情况下 0.3f*(int) 被隐式转换为 float ,而在第二种情况下 0.3f*(const int) 被隐式转换为 double 。这是正确的吗?如果是这样,为什么会发生这种情况?另外,什么是“正确”的方法?

非常感谢

最佳答案

甚至在代码生成之前,编译器就可以执行两个常量的乘法运算。其余的必须在运行时完成。

关于c - 将 int 和 const int 转换为 float 时的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17066385/

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