3

私はCでintに対して正常に機能するコードを記述しましたが、floatを使用してこれを実行しようとすると、エラーが表示され、正しくするために何ができるでしょうか。

#include<stdio.h>

int main()
{
    float a,y;
    float square();
    scanf("%f", &a);
    y = square( a );
    printf("%f %f ",a ,y);
}

float square(float b)
{
    float z;
    z = b*b;
    printf("%f %f",z ,b);
    return(z);
}

エラー:

return.c:12: error: conflicting types for 'square'
return.c:13: note: an argument type that has a default promotion can't match an empty parameter name list declaration
return.c:6: note: previous declaration of 'square' was here
4

2 に答える 2

8

の宣言をsquare()関数の外に移動し、プロトタイプが一致することを確認します。

float square(float b);  //  Make sure this matches the definition.

int main()
{
    float a,y;
    scanf("%f", &a);
    y = square( a );
    printf("%f %f ",a ,y);
}

float square(float b)
{
    float z;
    z = b*b;
    printf("%f %f",z ,b);
    return(z);
}

なぜそれが「機能した」のかについてはint、その場合に使用した正確なコードを表示する必要があります。

于 2011-12-10T02:47:17.067 に答える
4

あなたはあなたが与えたプロトタイプの議論を見逃しているだけです。持っていた

float square();

いつあるべきか

float square(float);

関数の外に移動する必要はありませんが、プロトタイプが後で定義する関数と同じシグネチャ(リターンタイプ、名前、およびパラメータ数/タイプ)を持っていることを確認する必要があります。

于 2011-12-10T02:55:54.043 に答える