i++和++i的区别

sjdev 2009-08-03 11:50:10
其实就是返回值不同。

其实i++可以看做这么一个函数
int fun1(int ref i)
{
int tmp = i;
i = i + 1;
return tmp;
}
++i呢,可以看做
int fun2(int ref i)
{
i = i + 1;
return i;
}

程序中诸如:buffer[i++];
其实可以这么看buffer[(i++)],i++相当于进行了一次函数调用,因为其返回结果是i,所以buffer[i++]其实就是buffer[i].

同理也可以解释buffer[++i];

...全文
220 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2009-08-04
  • 打赏
  • 举报
回复
大哥,还讨论这个?推荐了那么一贴就够笑死人了。。。
zhubo_1117 2009-08-04
  • 打赏
  • 举报
回复
这个N年前都已经知道了啊
beckfun 2009-08-04
  • 打赏
  • 举报
回复
有空多看看msdn不是csdn。虽然只有一个单词的差别,但是内容差多了。
http://msdn.microsoft.com/zh-cn/library/ms173145%28VS.80%29.aspx 从中看到的一段:“当表达式中出现两个具有相同优先级的运算符时,它们根据结合性进行计算。左结合运算符按从左到右的顺序计算。例如,x * y / z 计算为 (x * y) / z。右结合运算符按从右到左的顺序计算。赋值运算符和三元运算符 (?:) 是右结合运算符。其他所有二元运算符都是左结合运算符。然而,C# 标准没有指定何时执行表达式中的增量指令的“设置”部分。”
其实我也没看懂..可能是机器翻译的缘故吧.
结合http://www.wangchao.net.cn/bbsdetail_37961.html这上面最后得出来的结论:“最终结论:语言差异C# does have explicit rules around this behavior. (left to right);C++ does not (problem of the C++ language, not the compiler)”大概理解为C#运算符有明确的计算规则就是left to right;而C++是没有这样的规则的.在结合以下一段代码
#include <stdio.h>
void main()
{
int j=0,q;
q=(++j)+(++j);
printf("%d,%d",q, j);
}
int j = 0, q;
q = (++j) + (++j);
Console.WriteLine(q);
Console.WriteLine(j);
C++运行结果是:(4,2),而C#运行结果是:(3,2)调试环境vista+vs2005+.net3.5,自己去琢磨吧...


我上篇得回复
beckfun 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 mbh0210 的回复:]
引用 10 楼 yfqvip 的回复:
引用 9 楼 hack95 的回复:
引用 6 楼 yfqvip 的回复:
这个版块最近怎么越来越烂了,一天到晚有人发这种无聊的帖子.


而且还被置顶。

是啊,笑死人了

不同意你的观点,不懂总比装懂好,基础是很重要的,别小看这些问题,任何人都是从不懂到懂的,没有什么好笑的,知识就是要追根问底。
[/Quote]关键是这个是最基础得...上个帖子中既然还有人拿IL代码来解释这个问题...很是无奈...还被推荐了...
hecker728 2009-08-04
  • 打赏
  • 举报
回复
基础知识,参与的人多嘛!!

问个高深的,回帖的人就个把两个。而且还不能解决问题。。
mbh0210 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yfqvip 的回复:]
引用 9 楼 hack95 的回复:
引用 6 楼 yfqvip 的回复:
这个版块最近怎么越来越烂了,一天到晚有人发这种无聊的帖子.


而且还被置顶。

是啊,笑死人了
[/Quote]
不同意你的观点,不懂总比装懂好,基础是很重要的,别小看这些问题,任何人都是从不懂到懂的,没有什么好笑的,知识就是要追根问底。
staffsalary 2009-08-04
  • 打赏
  • 举报
回复
顶哦~
ljhcy99 2009-08-04
  • 打赏
  • 举报
回复
基础知识很重要的
满衣兄 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hack95 的回复:]
引用 6 楼 yfqvip 的回复:
这个版块最近怎么越来越烂了,一天到晚有人发这种无聊的帖子.


而且还被置顶。
[/Quote]
是啊,笑死人了
柳晛 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yfqvip 的回复:]
这个版块最近怎么越来越烂了,一天到晚有人发这种无聊的帖子.
[/Quote]

而且还被置顶。
mbh0210 2009-08-04
  • 打赏
  • 举报
回复
楼主看看这个
http://topic.csdn.net/u/20090731/22/e91059c5-077c-405f-855c-01e5655d9c7f.html?7896
mbh0210 2009-08-04
  • 打赏
  • 举报
回复
接着又讨论,上一个讨论的很好了
满衣兄 2009-08-04
  • 打赏
  • 举报
回复
这个版块最近怎么越来越烂了,一天到晚有人发这种无聊的帖子.
wuyi8808 2009-08-04
  • 打赏
  • 举报
回复
已经很清楚了。
mythad 2009-08-04
  • 打赏
  • 举报
回复
怎么每次都问这个问题呢?
Learn-anything 2009-08-04
  • 打赏
  • 举报
回复
lg
PandaIT 2009-08-03
  • 打赏
  • 举报
回复
这个问题还想接着讨论?

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧