我正在编写此代码以返回一个值,我将通过该函数的参数传递该值并打印该值。 这是我的代码:
#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?
如何解决这个问题?
提前感谢:)
答案 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}}。