以下 c 代码中有什么问题打印垃圾值

  • 本文关键字:打印 问题 代码 以下 c
  • 更新时间 :
  • 英文 :

#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));

相关内容

  • 没有找到相关文章