| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1381 人关注过本帖
标题:关于++运算符的问题
取消只看楼主 加入收藏
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
 问题点数:0 回复次数:4 
关于++运算符的问题
int add(int a,int b)
{
    return (a+b);
}

int a=5;

add(a++,a) =10
add(a,a++) =11
add(++a,a) =12
add(a,++a) =12
add(++a,++a) =14
add(++a,a++) =12
add(a++,a++) =11
add(a++,++a) =13

为什么add(++a,++a) =14,而add(a++,++a) =13呢,现在弄糊涂了,哪位大侠给解释一下吧,万分感谢!
搜索更多相关主题的帖子: 运算符 
2008-06-22 10:52
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
看一下add(++a,a) =12
a(5)先进栈,然后++a(6)再进栈,函数的参数是值拷贝的,也就是说参数6和5被传入函数,函数在堆栈中创建临时变量存放这两个值。所以我认为返回值应该是11啊,为什么编译器返回的是12呢?

请教starwing83!

2008-06-22 11:25
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
回复 4# StarWing83 的帖子
感谢starwing83,呵呵

2008-06-22 11:26
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
差不多明白了,谢谢啊。后自加就没有这个问题了

2008-06-22 11:45
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
starwing83,你总提到的标准指的是c90还是c99?

2008-06-22 12:24
快速回复:关于++运算符的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027933 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved