当两个函数位于一行中时,堆栈框架的样子
How stack frames look like when two functions lie in one line?
例如,我们有
int p(void) {
return 4;
}
int q(void) {
return 5;
}
int main(void) {
int x = p() + q();
return 0;
}
在这种情况下,堆栈框架的外观如何?确切地说,P和Q是同时评估P和Q,还是首先将P评估为4后,该程序将进行q?
来自cppreference
几乎所有C 操作员的操作数评估顺序(包括函数参数的评估顺序功能通话表达和评估顺序任何表达式中的子表达(未指定。编译器可以按任何顺序评估操作数,并且可以选择其他顺序再次评估相同的表达。
此规则有例外。
除非下面指出,但没有从左到右的概念C 的权利评估。这不是要混淆运营商的左右右至左右关联:表达式F1(( f2(( f3((被解析为(f1(( f2((( f3((操作员 ,的从左到右关联可以在运行时间首先评估F1((或F2((之间的评估
相关文章:
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- 算法问题:查找从堆栈中弹出的所有序列
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- catch框架有没有办法比较流或文件
- 为什么调用堆栈数组会导致内存泄漏
- gdb错误:Backtrace已停止:上一帧与此帧相同(堆栈已损坏?)
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 使用Qt框架在c ++类中创建API调用
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的 int main() 中出现堆栈溢出错误
- 如何在ECS框架中更新组件数据和通知系统
- 堆栈和队列是否像C++中的数组一样传递?
- 拥有映射的现代方法,该映射可以指向或引用已在堆栈上分配的不同类型的数据
- 当两个函数位于一行中时,堆栈框架的样子
- C 规范是否可以通过传递堆栈框架地址偏移来关闭实现
- 有没有任何方法可以在C++中导致整个堆栈框架展开?(使用异常除外)
- c++禁止堆栈框架下的异常
- 理解C/ c++中函数调用的堆栈框架
- 构造函数是否有堆栈框架