下面的c代码打印垃圾值有什么错误? #包括 整数和(整数x,整数y) { int-add; 加法=x+y; printf(“\nadd=%d”,添加); 返回添加; } int main() { INTA,b; a=1;b=2; 总和(a,b); printf(“\nsum=%d”,总和); 返回0; }

下面的c代码打印垃圾值有什么错误? #包括 整数和(整数x,整数y) { int-add; 加法=x+y; printf(“\nadd=%d”,添加); 返回添加; } int main() { INTA,b; a=1;b=2; 总和(a,b); printf(“\nsum=%d”,总和); 返回0; },c,C,输出: 添加=3 总和=4195760 这里有什么问题,为什么加法的返回是在主函数中打印一个垃圾值 #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

输出:
添加=3
总和=4195760

这里有什么问题,为什么加法的返回是在主函数中打印一个垃圾值

#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;
}
这就是您打印函数值(指向函数的指针,垃圾值)而不是具有sum值的变量的问题!你应该使用
intans=sum(a,b);printf(“%d”,ans)这将为您提供所需的答案

sum(a,b);

此行试图打印出
sum
,但是sum不是声明为
int
,而是声明为函数。因此,它正在打印指向函数
sum
的指针。您有一个名为
sum
的函数,但您没有在
printf()中调用它。你所做的就是使用它的地址

通过写作

printf("\nsum=%d",sum);
您已经声明并实现了一个名为
sum
的函数,该函数接收2个
int
s,并输出1个。但是,每次在没有
()
(就像在
printf
中一样)的情况下使用这个
sum
,您只需告诉编译器获取该符号的值,函数符号的值就是它的地址,因此得到的值很奇怪

修订人:

int sum(int x,int y)
{
    int add;
    add=x+y;
    printf("\nadd=%d",add);
    return add;
}

在printf中,您试图打印sum的值,即函数名。函数名保存地址。所以它是函数sum的打印地址。 要打印实际结果,必须调用函数sum(a,b)


1) 请不要标记不相关的语言2)您从不使用返回值,然后打印函数指针的值3)将编译器的警告设置为最大值我从中得到了它(2)您从不使用返回值,然后打印函数指针的值。。。。。。。。。。。。。。不知道从my和感谢您的时间编码删除
sum(a,b),更改
printf(“\nsum=%d”,总和)
printf(“\nsum=%d”,和(a,b))。最后开始阅读你的C语言课本。@user463035818建议局部变量在声明时应立即初始化,这至少是有争议的,如果不是完全错误的话。将它们初始化为一个伪值,因为在声明时预期的值还不可用,这使得bug更难用静态和动态来识别分析器,交换条件是使程序具有确定性(但仍然有缺陷)。
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(a,b));