没return语句,函数返回值问题
1个回答
展开全部
fun()函数没有自行指定返回值。所以printf()函数就直接从eax寄存器中取出值并打印出来了。之前eax寄存器得值是几那打印出来的就是几。
首先是猜想,主流平台上,函数返回都是通过某个通用寄存器返回,x86平台是eax,arm是r0,所以猜想即使是void返回,如果硬是要得到返回值的话,应该是得到返回那一刻该寄存器的值。
C语言的函数如果没有return,那一定就是一个返回值为void的函数,表示不返回任何值,只是函数的代码返回了,也就是执行在汇编层面上的ret指令来结束函数的调用。
不对,因为就算你定义了没有返回值的函数,编译后编译器也会默认给你加上returnvoid;//return一个空,所以不管有没有返回值或者是你有没有写return最后函数执行完毕后还是会返回到方法调用处的。
有返回值的函数intfunction1(){return1;--必须要return才能有返回值。};没有返回值的函数voidfunction2(){return;--写了return会直接跳出函数,不会继续执行下面的语句。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询