return (a+b)和a+b;return c的区别。
看调用约定,顺便理解下函数调用的具体过程。一般传值调用的时候,先把参数逐个push到栈中去,然后修改ebp栈基址寄存器,push一些寄存器的值。子函数内部就从刚才push进的参数里拿数就行了。返回值写到eax寄存器中去。以下为测试代码。
#include <stdio.h>
int su_1(int a_, int b_)
{
int c;
c=a_+b_;
return c;
}
int su_2(int a_, int b_)
{
int c=a_+b_;
return c;
}
int su_3(int a_, int b_)
{
return a_+b_;
}
int main()
{
int a=1;
int b;
b=2;
int c;
c=su_1(a,b);
printf("%d\n", c);
return 0;
}
采用return a+b形式:

采用
c=a+b;
return c; 形式:

本文深入解析了C语言中函数调用与返回值的实现机制,通过具体代码实例,详细阐述了使用return(a+b)与c=a+b;return(c)两种不同方式的函数调用过程,揭示了它们在参数传递、内存堆栈操作及返回值处理上的区别,旨在帮助开发者更深入地理解函数执行流程。
1536

被折叠的 条评论
为什么被折叠?



