为什么以下3个程序的输出是这样的?

Par*_*ita 1 c

#include<stdio.h>
int add(int,int);
int main()
{
  int p=add(10,20);
  printf("%d",p);
  return 0;
}

int add(int x, int y)
{
  int sum=x+y;
}

O/P: 30
Run Code Online (Sandbox Code Playgroud)
#include<stdio.h>
int add(int,int);
int main()
{
  int p=add(10,20);
  printf("%d",p);
  return 0;
}
int add(int x, int y)
{
  int sum=x+y;
  printf("Hello");
}

O/P: 5
Run Code Online (Sandbox Code Playgroud)
#include<stdio.h>
int add(int,int);
int main()
{
  int p=add(10,20);
  printf("%d",p);
  return 0;
}
int add(int x, int y)
{
  int sum=x+y;
  sum++;
}

O/P: 30
Run Code Online (Sandbox Code Playgroud)

Pra*_*rav 9

所有代码片段都不会编译,因为在使用它们之前没有声明/定义函数.

此外,即使您添加上面的声明,main()片段的行为仍然是未定义的,因为您正在使用non-void没有return语句的函数的返回值.


GWW*_*GWW 5

您没有在添加功能中返回总和.