错误C2078:初始化程序太多

时间:2015-02-13 07:11:15

标签: c++ c function compiler-errors

为什么这段代码不起作用?我的IDE是Visual Studio 2013。

#include <stdio.h>
float tempatureGuide(float F, float C);
#define FREEZING_PT 32.0f
#define SCALE_FACTOR (5.0f/9.0f)
int main(void)
{
    float fahrenheit = 0.0;
    float celsius = 0.0 ;
    int convertTemp;
    printf ("Enter 0 to calculate Celsius or 1 to calculate Fahrenheit:            ");
    scanf ("%d", &convertTemp);

    if (convertTemp == 0)
    {
        // compute Celsius
        printf("Enter Fahrenheit temperture: ");
        scanf("%f", &fahrenheit);
        celsius = ((fahrenheit - FREEZING_PT) * SCALE_FACTOR);
        printf("Fahrenheit = %f  and Celsius = %f\n", fahrenheit, celsius);
        float tempatureGuide(fahrenheit, celsius);  // Error here
    }
    else
    {
        // compute fahrenheit
        printf("Enter the temperature in degrees fahrenheit\n\n");
        scanf("%f", &fahrenheit);
        celsius = (SCALE_FACTOR)* (fahrenheit - FREEZING_PT);
        printf("The converted temperature is %f", celsius);
        float tempatureGuide(fahrenheit, celsius);    // and here

    }
    return (0);
}

float tempatureGuide(float F, float C){
    if (F < 32 || C < 0)
        printf("It is freezing!");
    else if (F <= 60 || C <= 16)
        printf("It is cold");
    else if (F >= 70 || C >= 21)
        printf("It is just right");
    else if (F >= 82 || C >= 28)
        printf("It is warm");
    else if (F > 95 || C > 35)
        printf("It is hot");
    else
        printf("Please enter a number!");
    return (0);
}

这里的目标是添加我之前做过的转换温度项目,并为它添加一个if else语句函数来评论temp。我得到的错误是

Error   3   error C2078: too many initializes

在我调用我的函数的两行上。我搜索了一个答案,但找不到任何答案。

3 个答案:

答案 0 :(得分:3)

这一行看起来像是一个float的C ++初始化尝试,其中有一个参数太多(因此“太多初始化器”错误),而不像函数调用。 / p>

float tempatureGuide(fahrenheit, celsius);

大概你想调用函数并将结果存储在变量中:

float temp = tempatureGuide(fahrenheit, celsius);

或者只是调用函数并忽略返回值:

tempatureGuide(fahrenheit, celsius);

特别是因为你的函数总是返回0,所以人们可能会质疑是否需要非void返回类型。

答案 1 :(得分:1)

你需要调用一个函数

float tempatureGuide(float fahrenheit, float celsius) { //...}

as

float retval = tempatureGuide(fahrenheit, celsius);

或至少

tempatureGuide(fahrenheit, celsius);  // not need to use return value

答案 2 :(得分:0)

这只是一个简单的错误。请更改2行代码,您可以在其中调用tempatureGuide(华氏度,摄氏度);功能如下。

float tempatureGuide(fahrenheit, celsius); --> float ret = tempatureGuide(fahrenheit, celsius);

我在VS2013中测试了相同的内容,因为您使用了相同的更改。我能够成功编译并运行它。查看附件。 enter image description here