【问题标题】:error invalid conversion from 'float*' to 'int' [-fpermissive]从 'float*' 到 'int' 的错误无效转换 [-fpermissive]
【发布时间】:2018-11-08 16:36:12
【问题描述】:

好的,我正在尝试通过函数将一些数字转换为其他数字。矢量“tempc”包含 7 个摄氏度数字。 “tempf”类型将包含华氏温度。但是我在标题“从'float *'到'int'[-fpermissive]的错误无效转换”中得到了这个错误。我是编程新手,所以我真的有点新手。对不起,代码是意大利语

#include <iostream>
using namespace std;

//dichiarazione variabili e vettori
float tempc[7] = {23,25,22,19,18,20,16};
float tempf[7];
const int MAX_GRADI = 7;

//funzione conversione
int ConversioneInF ()
{
    for (int i=0;i<MAX_GRADI;i++)
        tempf[i]=(9/5)*tempc[i]+32; //C in F
    return tempf;

}

int main () 
{
    ConversioneInF();
    for (int i=0;i<MAX_GRADI;i++)
        cout<<"La temperatura in fahrenheit e' :"<<tempf[i]<<endl;

    return 0;
}

【问题讨论】:

  • 9/5 在 c++ 中恰好是 1,因为它们是整数。 9.0/5 大约是 1.8
  • 您的函数的返回类型为int,但您正试图返回float 的数组。 ConversioneInF 的返回值是什么意思?
  • 你的tempf 是全局的,不需要从你的函数中返回任何东西。
  • 为什么你的ConversioneInFint 返回类型?为什么你return tempf来自它?你能解释一下这些东西的目的吗?请不要使用全局变量。
  • 你的循环有误导性的缩进,循环体应该有{}。不幸的是,这两个错误抵消了

标签: c++ function


【解决方案1】:

在您的函数ConversioneInf 中,您将返回tempf。 这是一个浮点数组,在 c++ 中是一个指向浮点的指针 (float*) 此类型无法转换为指定的返回类型int。 由于您没有使用返回值,只需将其更改为 void:

void ConversioneInF ()

【讨论】:

    【解决方案2】:
    void ConversioneInF ()
    {
        for (int i=0;i<MAX_GRADI;i++)
            tempf[i]=(9.0/5.0)*tempc[i]+32;
    }
    

    反正 tempf 是全局的,你不需要返回它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      相关资源
      最近更新 更多