传递函数参数和无返回语句

use*_*901 2 c function

#include<stdio.h>
int add(int,int);

main()
{
      int a=2,b=3;
      printf("%d %d %d",a,b,add(a,b));
      getch();
}

int add(int a,int b)
{
     int c;
     c=a+b;     
}
Run Code Online (Sandbox Code Playgroud)

好的,这给了我输出2 3 5..但是对于以下程序

#include<stdio.h>

int add(int,int);

main()
{
      int a=2,b=3;
      printf("%d %d %d",a,b,add(a,b));
      getch();
}

int add(int a,int b)
{
     int c;
     c=a+b;
     c=0;     
}
Run Code Online (Sandbox Code Playgroud)

它仍然是2 3 5作为输出..因为我们没有return声明最终声明c=0没有初始化..它应该给,2 3 0但它只给予2 3 5.

Yu *_*Hao 5

它是未定义的行为,任何事情都可能发生,你不能依赖它.

可能发生的事情是,在函数中add(),c计算值,并在堆栈中,在printf()调用中,打印堆栈的特定地址中的内容.同样,您不能依赖未定义的行为.