#include <stdio.h>
int sum(int x,int y)
{
int add;
add=x+y;
printf("nadd=%d",add);
return add;
}
int main()
{
int a,b;
a=1;b=2;
sum(a,b);
printf("nsum=%d",sum);
return 0;
}
输出:
添加=3
总和=4195760
这里有什么问题,为什么加法的返回是在主函数中打印垃圾值。
sum(a,b);
这就是问题 您正在打印函数的值(指向函数的指针,垃圾值(而不是具有总和值的变量!您应该使用int ans=sum(a,b);printf("%d",ans);
它会给您所需的答案
你有一个名为 sum
的函数,但你没有在printf()
中调用它。你正在做的是使用它的地址。
通过写作
int sum(int x,int y)
{
int add;
add=x+y;
printf("nadd=%d",add);
return add;
}
您已经声明并实现了一个名为 sum
的函数,该函数接收 2 个int
,输出 1。但是,每次您在没有()
的情况下使用此sum
时(例如在您的printf
中(,您只需告诉编译器获取该符号的值,而函数符号的值是它的地址,因此您得到的奇怪值。
修复方式:
int main()
{
int a,b;
a=1;b=2;
int s = sum(a,b); /* Option 1 - save output of sum into a variable s */
printf("nsum=%d",s); /* use that variable */
/* Option 2 */
/* skip the line sum(a,b); and call the function from inside printf */
printf("nsum=%d",sum(a,b));
return 0;
}
printf("nsum=%d",sum);
这一行试图打印出来sum
但是总和没有声明为int
而是声明为函数。因此,它正在打印指向函数sum
的指针。
在 printf 中,您正在尝试打印 sum 的值,即函数名称。 函数的名称保存地址。 所以它是打印函数总和的地址。要打印实际结果,您必须调用函数 sum(a,b(
printf("nsum=%d",sum(a,b));