квадрат числа с плавающей точкой в ​​C - PullRequest
3 голосов
/ 10 декабря 2011

Я написал код на C, который отлично работает для int, но когда я пытаюсь сделать это с помощью float, он показывает ошибку, что я могу сделать, чтобы исправить это.*

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

Ответы [ 2 ]

8 голосов
/ 10 декабря 2011

Переместите объявление 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, вам придется показать намТочный код, который вы использовали для этого случая.

4 голосов
/ 10 декабря 2011

Вы просто упускаете аргумент в прототипе, который вы дали. У тебя было

float square();

Когда это должно быть

float square(float);

Вам не нужно перемещать его за пределы функции, но вам необходимо убедиться, что прототип имеет ту же сигнатуру (тип, имя и число / тип возвращаемого параметра), что и функция, которую вы определите позже.

...