我今天在回顾过去的测验后测试了 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/