为什么我会在 c++ 中将 int 转换为浮动错误?在程序中的某个时刻,我将一个值为 10 或 14 的整数显式转换为浮点数,我得到 0。为什么会这样?我尝试了 static_cast,给了我同样的结果。由于 int 和 float 都是 4 个字节,我认为 int 到 float 的转换不是按大小降级或提升吗?它与舍入误差等有关吗?有人可以解释一下。
这是代码(这里有一个改动很好,但我仍然不知道为什么)---
#include <iostream>
using namespace std;
int main()
{
int n;
int sum;
cout << "Please enter the number:";
cin >> n;
int *elements = new int[n];
cout << "Please enter the elements:";
for(int i=0; i<n; i++)
{
cin >> elements[i];
}
cout << endl;
///// this approach, gives the sum right, but float(sum) fails and always gives zero.
for(int i=0, sum=0; i < n; i++)
{
sum = sum + elements[i];
}
////// This works, when sum is initialised outside of for loop. float(sum) does the right conversion as well.
//sum = 0;
//for(int i=0; i < n; i++)
//{
// sum = sum + elements[i];
//}
cout << " float n is " << float(n) << " float sum is "<< float(sum) << endl;
// float(sum) is zero, when sum is initialised from within for loop.
delete[] elements;
return 0;
}
编译命令-> g++ 3.2.cpp -o 3.2
输入:n = 4;元素 = 1 2 3 4
感觉像是我忽略的一些小事。
谢谢您的帮助。