2

我想在 ANSI C 中声明一个用于我的代码的函数。我可以在 main() 中使用它之后定义该函数吗?例如我写的一个绝对值函数:谁能告诉我它是否合理?

#include <stdio.h>

int main()
{
    double value1 = -5;
    printf("%lf",
           abs(value1));
}

double abs(double number)
{
    if (number < 0) {
        (number * (-1) = number);
    }
    return number;
}
4

2 回答 2

5

你需要修复几件事:

#include <stdio.h>

double abs(double number); // <<< 1. prototype here

int main()
{
    double value1 = -5;

    printf("%lf",
           abs(value1));
}

double abs(double number)
{
    if (number < 0) {
        number = number * -1.0; // <<< 2. fix here
    }
    return number;
}
  1. abs函数需要一个原型,以便编译器在您调用它之前知道它的函数签名

  2. 你否定的表达number是从后到前

于 2013-04-17T21:10:41.257 回答
1

函数必须至少在使用前声明,最好使用原型语法(它指定参数的数量和类型,以及返回类型)。所以至少,你需要一条像

double abs( double number ); 

在您 调用. _absmain

你也可以在使用之前定义一个函数:

double abs( double number )
{
   // compute absolute value
}

int main( void )
{
  ...
  x = abs(x);
  ...
}

这实际上是我的偏好;同一个翻译单元(文件)中的所有内容都应在使用前定义。这样您就不必担心保持声明和定义同步。

于 2013-04-17T21:54:27.517 回答