c++ - 为什么从 "int"到 "float"的类型转换会将我的值减半?

标签 c++ casting

我今天在回顾过去的测验后测试了 C++ 中的类型转换,但我终究无法弄清楚为什么我的“x”值在以下代码中从 9 变为 4.5000。

int main(){
    int x = 9, y = 2;
    float z;
    z = (float)x/(float)y;
    printf("\n%f", z);
    printf("\n%f", x);
    printf("\n%d", x);
}

输出

4.5000
4.5000
9

如果有任何帮助,我将不胜感激!

最佳答案

printf 函数需要一个 float 在堆栈上(因为 %f)而你只提供了一个 int

在这种情况下,您需要将 x 转换为 float:

printf("\n%f", (float)x);

关于c++ - 为什么从 "int"到 "float"的类型转换会将我的值减半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24900243/

相关文章:

c++ - 如何用 C++ 数组填充 torch::tensor?

php - 转换变量时的三元运算符

ios - 在 for 循环中类型转换数组元素

c - 如何理解指针数组的类型转换?

.net - OpenCV多线程线程消息

c++ - 如何使用可变参数模板在 C++11 中生成左关联表达式(也称为左折叠)?

c++ - 在 DLL 中使用的最简单的 C++ PUSH 通知/POST 解决方案?

c++ - 模棱两可的模板怪异

Swift:使用 as/as 进行转换有什么区别?/as!关键字和 C 风格的转换?

c++ - 将整数转换为 ascii 值 C++