没return语句,函数返回值问题

 我来答
深空游戏
2023-06-28 · 百度认证:东莞市深空信息咨询官方账号
深空游戏
向TA提问
展开全部

fun()函数没有自行指定返回值。所以printf()函数就直接从eax寄存器中取出值并打印出来了。之前eax寄存器得值是几那打印出来的就是几。

首先是猜想,主流平台上,函数返回都是通过某个通用寄存器返回,x86平台是eax,arm是r0,所以猜想即使是void返回,如果硬是要得到返回值的话,应该是得到返回那一刻该寄存器的值。

C语言的函数如果没有return,那一定就是一个返回值为void的函数,表示不返回任何值,只是函数的代码返回了,也就是执行在汇编层面上的ret指令来结束函数的调用。

不对,因为就算你定义了没有返回值的函数,编译后编译器也会默认给你加上returnvoid;//return一个空,所以不管有没有返回值或者是你有没有写return最后函数执行完毕后还是会返回到方法调用处的。

有返回值的函数intfunction1(){return1;--必须要return才能有返回值。};没有返回值的函数voidfunction2(){return;--写了return会直接跳出函数,不会继续执行下面的语句。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式