首页 > 代码库 > C/C++函数参数读取顺序
C/C++函数参数读取顺序
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 void B(int a, int b){ 5 cout << a << " " << b << endl; 6 } 7 void A(){ 8 int i=0; 9 B(++i, i++);10 printf("%d\n", i);11 }12 int main() {13 A();14 }
2,0
1 #include <cstdio>2 3 int main() {4 int a = 10;5 printf("%d %d %d\n", a++, ++a, a);6 return 0;7 }
1. 在将参数入栈前,编译器会先把参数的的表达式都处理掉,哪怕这些运算会改变其中某些参数的值,
2.对于a++操作,编译器会开辟一个缓冲区来保存当前a的值,然后再对a操作,取值时是从缓冲区取,而不是直接从a的内存地址里取。
最后再验证一下理论,a = 10, printf("%d %d %d %d\n", a++, ++a, a, a++),结果应该是:12 13 13 10!
C/C++函数参数读取顺序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。