#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
这里有什么不对,为什么返回的添加是在主函数中打印一个垃圾值。
答案 0 :(得分:5)
sum(a,b);
这是问题您正在打印函数的值(指向函数的指针,垃圾值)而不是具有总和值的变量!您应该使用int ans=sum(a,b);printf("%d",ans);
来获得所需的答案
答案 1 :(得分:1)
您有一个名为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;
}
答案 2 :(得分:0)
printf("\nsum=%d",sum);
此行正在尝试打印sum
,但sum并未声明为int
,而是作为函数。因此,它打印指向函数sum
的指针。
答案 3 :(得分:0)
你试图打印sum的值,这是函数名。函数名称包含地址。所以它是函数和的打印地址。 要打印实际结果,您必须调用函数sum(a,b)
printf("\nsum=%d",sum(a,b));