#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
#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
#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
答案 0 :(得分:9)
所有代码片段都不会编译,因为您在使用它们之前尚未声明/定义这些函数。
此外,即使您在main()
上面添加声明,仍然会未定义片段的行为,因为您使用的non-void
函数的返回值没有return
语句。< / p>
答案 1 :(得分:5)
您没有在添加功能中返回总和。
答案 2 :(得分:1)
printf("%d",p);
正在打印p
指向的垃圾。
您应该从sum
返回 add
:
return sum;
答案 3 :(得分:1)
幸运的是,或者更确切地说是因为你没有优化而编译它们。 ; - )
结果实际上是未定义的,取决于编译器和编译选项。在你的设置中,函数add()恰好在main()期望返回值的位置处的堆栈上留下了一些东西。尝试优化,你会看到差异。