C语言 您所在的位置:网站首页 函数max的返回值是什么 C语言

C语言

#C语言| 来源: 网络整理| 查看: 265

度娘搜了一下,大部分是认为没有返回值,可是实际编写你会发现并非如此.

下面随便编写一个测试程序,有return语句(结果1:

图1

没有return语句(结果2:

图2

那么很多人可能会以为如果函数没有return语句就会返回最后一条语句的值,那么我们再在下面加一条语句试试:

图3

难道真的是最后一条语句的值?

图四

但在这里我们可以看到函数返回值是之前的变量m的值,而不是最后一条语句的值.

原因是什么?

通过查阅资料我们了解到:函数在执行return语句时会将其右边语句的值保存在eax寄存器中,然后整个函数语句被调用时的值就是eax寄存器里面的值。

如果没有写return,那么返回的也就自然是上一次变量对应eax寄存器里面的值。

图5

eax寄存器是个什么东西?

(非计算机专业,粗略解释)形参以及内部变量的值都是临时存放在eax寄存器里面的,所以它的值是时刻更新的,也就是最后一次被更新的变量的值.

这也很好地解释了图4为什么不是最后一条语句的值,而是最后一次被更新的变量m的值.

如果没有函数体,会返回什么值?

图6

这里要提到另一个规则了:函数在调用时,根据实参顺序从右到左依次存入eax寄存器里,再放到形参里面,也就造成了图6中的结果:输入顺序不同,返回的值不同,这里按照从右到左的选择返回的就是a的值。

参考:https://blog.csdn.net/m0_37589327/article/details/78640849



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有