#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.
它是未定义的行为,任何事情都可能发生,你不能依赖它.
可能发生的事情是,在函数中add(),c计算值,并在堆栈中,在printf()调用中,打印堆栈的特定地址中的内容.同样,您不能依赖未定义的行为.