在C ++中将float转换为int的问题

时间:2016-02-14 15:43:54

标签: c++ type-conversion

我试图通过使用必须返回浮点值的函数对向量内的值求和,如下所示:

float vectorSum(float *vector, int vectorSize){
    int result = 0;

    for (int i = 0; i < vectorSize; i++){
        cout << vector[i] << "\n";
        resultado += vetor[i];
    }
    cout << "\n\n";

    return resultado;
}

我的这些变量将由用户填写:

float vector[0];
int vectorSize;


cout << "Write the " << vectorSize << " values to insert in the vector:" << endl;

    for (int c = 0; c < vectorSize; c++){
        cin >> vector[c];
    }
    cout << "\n\n";

最后将调用函数vectorSum:

cout << "The sum of the vector's values is:" << endl;
    vectorSumTotal = vectorSum(vector, vectorSize);
    cout << vectorSumTotal;
    cout << "\n\n";

问题:

如果我使用值3填充vectorSize并使用值填充向量:1,2,6

然而,我不知道为什么,6变为8.40779e-45,我需要它来保持值6。

将float转换为int或指针可能是一个问题吗?

帮助?

2 个答案:

答案 0 :(得分:1)

从不初始化vector的内存。您必须执行float *vector = new float[vectorSize];,然后才能使用值填充(然后delete[] vector;

另外,为什么你使用float的数组std::vector,而vector是你情况下更好的选择。

更重要的是,避免调用您的数组std::vector,因为存在using namespace std;,如果您正在使用f = open('sample.txt', 'r') lines = f.readlines() f.close() name = 'ali' for i in range(len(lines) - 1): line = lines[i] #Find 'name' index (-1 if not found) index = line.find(name) # If the wanted name is found if index != -1: #Split line by spaces to get name and number starting from name words = line[index:].split() # Name and number should be the first two elements in words list name_number = words[0]+ ' ' + '5' #words[1] # # Do some thing with name_number # # the last '1' is to skip copying a space line = line[:index] + name_number + ' ' + line[index + len(name_number) + 1:] # Save result lines[i] = line output = open('sample.txt', 'w') for line in lines: output.write(line) output.close() ,则会影响它。

答案 1 :(得分:1)

您的定义是float vector[0]; 你应该改为float vector[MAX_SIZE]; 或使用vector<float>

使用float vector[0]; vetcor[0]时,vector[1]实际上在堆栈上,之后会被其他堆栈变量重叠。