为什么逗号表达式返回最后一个表达式的结果?--从另一个角度看C++-阿里云开发者社区

开发者社区> hengyunabc> 正文

为什么逗号表达式返回最后一个表达式的结果?--从另一个角度看C++

简介:
+关注继续查看

auto v = func1(), func2(), func3();

因为一个函数调用是要经过参数压栈,调用完了,还有退栈(栈清理)的过程。
而这个退栈的工作可以由调用者或者被调用者来进行,因此也分为两种不同的调用约定:
__cdecl和_stdcall,当然这个扯远了。要是再扯远点,还有利用寄存器,省去压栈的fastcall和C++特有的thiscall。
正因为函数调用是一个不断地入栈出栈的过程,所以逗号表达式返回的是最后一个表达式的结果。
否则,假定是返回第一个表达式的结果,那这个结果存放在哪里?


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
显存不够,框架来凑:两行代码显存翻倍,2080Ti也能当V100来用
2080Ti 竟然可以当 V100 来用,这个功能有点儿厉害。
3 0
Human vs AI,人类和机器的学习究竟谁更胜一筹?
在各种任务中人类的学习能力和机器的学习能力究竟哪个更胜一筹?
6 0
AI自动生成的代码还自带原来的「WTF」注释?程序员:我笑了,抄的太明显
直接复制粘贴训练集里的代码,原来的注释也一字不差。AI 的「抄能力」获得了认可。
4 0
Go并不需要Java风格的GC
像Go、Julia和Rust这样的现代语言不需要像Java c#所使用的那样复杂的垃圾收集器。但这是为什么呢?
5 0
重磅发布开源框架2.0RC版 、生物计算平台「螺旋桨」,百度飞桨交了份年终成绩单
在 12 月 20 日举行的「WAVE SUMMIT+ 2020 深度学习开发者峰会」上,飞桨平台交出了一份非常亮眼的年终成绩单。
6 0
面向对象的程序设计原则之SOLID原则
面向对象的程序设计原则之SOLID原则
7 0
Linux目录结构介绍
  根文件系统   /bin   这一目录中存放了供所有用户使用的完成基本维护任务的命令。其中bin是binary的缩写,表示二进制文件,通常为可执行文件。一些常用的系统命令,如cp、ls等保存在该目录中。
5 0
180行JavaScript代码实现的小球随机移动代码
180行JavaScript代码实现的小球随机移动代码
3 0
QT开发(一)——QT简介
  一、QT简介   1、QT简介   QT是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前包括Qt Creator, QtEmbedded,Qt Designer快速开发工具,Qt Linguist国际化工具等部分,Qt支持所有Linux/Unix系统,还支持Windows平台。   2、QT优点   Qt是一个跨平台的C++图形用户界面应用程序框架,提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt很容易扩展,并且允许真正地组件编程。Qt与GTK、KDE、MFC,OWL,VCL,ATL是一样的图形界面库。
4 0
+关注
hengyunabc
负责5K+应用,60K+机器的Spring Boot微服务技术落地,关注开发体验,微服务,APM,应用诊断,dubbo开源。Github: https://github.com/hengyunabc
106
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载