为什么函数不在C中返回负值?

时间:2016-03-19 20:24:36

标签: c

我正在编写此代码以返回一个值,我将通过该函数的参数传递该值并打印该值。 这是我的代码:

#include<stdio.h>
int abs(int x)
{
    if(x<0)
       return x;
}
int main()
{
    int x = -6;
    printf("Value of abs is %d\n",abs(x));
   return 0;
}

此代码给出了输出:

  

abs的值是6

为什么这段代码没有返回-6?

如何解决这个问题?

提前感谢:)

1 个答案:

答案 0 :(得分:3)

重命名该函数,编译器使用的是内置 abs()函数,而不是您定义的函数。

#include <stdio.h>

int Abs(int x)
{
    if (x < 0)
       return x;
    return -x;
}

int main()
{
    int x = -6;
    printf("Value of abs is %d\n", Abs(x));
    return 0;
}

gcc 编译器有一个选项,-fno-builtin会尊重每个冲突的用户定义函数,如果你只想覆盖1使用-fno-builtin-abs的情况abs() {1}}。