码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++函数参数读取顺序

时间:2016-09-04 22:27:41      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 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 }
View Code

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 }
View Code

 

1. 在将参数入栈前,编译器会先把参数的的表达式都处理掉,哪怕这些运算会改变其中某些参数的值,

2.对于a++操作,编译器会开辟一个缓冲区来保存当前a的值,然后再对a操作,取值时是从缓冲区取,而不是直接从a的内存地址里取。

 

最后再验证一下理论,a = 10, printf("%d %d %d %d\n", a++, ++a, a, a++),结果应该是:12 13 13 10!

C/C++函数参数读取顺序

标签:

原文地址:http://www.cnblogs.com/guxuanqing/p/5840439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!