A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冉亮 初级黑马   /  2012-10-17 22:16  /  1653 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冉亮 于 2012-10-21 15:50 编辑

刚接触C#,今天在群里遇到个问题,挂上来求解:

int i = 0;
i = i++ + i++;     此处可理解为 i=0+1  吗?
Console.WriteLine(i);  // i=1
Console.ReadKey();
解得 i=1;

int i = 0;
i = ++i + ++i;    此处可理解为 i=1+2  吗?
Console.WriteLine(i);  // i=3
Console.ReadKey();
解得 i=3;

int i = 0;
i = i++ + ++i;    此处可理解为 i=0+2  吗?
Console.WriteLine(i); // i=2
Console.ReadKey();
解得 i=2;

还有它们在内存中是如何进行存储的?

先谢谢啦 ^_^

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

7 个回复

倒序浏览
javascript:;javascript:;javascript:;这样估计更容易你理解了,lz理解挺对的,再附个表给你,int是值类型的.
更多图片 小图 大图
组图打开中,请稍候......

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
其实可以这么理解, 从左到右,哪个先出现就是哪个先用。
好比 i++  i先出现,那就是先利用 i 值,然后再i+1.
比如 i=1; b=i++;c=i; 这里b应该是1,c是2.
++i,就是说,先把i 加上1.然后再考虑 用它的事情。
比如 i=1;b=++i;这里b就是2了。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
颜晋南 发表于 2012-10-17 23:08
其实可以这么理解, 从左到右,哪个先出现就是哪个先用。
好比 i++  i先出现,那就是先利用 i 值,然后再i+ ...

嗯,懂了,谢谢
回复 使用道具 举报
其实完全没必要去理解这些,很少用到,i++就行了,以前学c语言的时候,编译器对这两个东东貌似有点混淆

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
穆_升 发表于 2012-10-17 23:06
javascript:;javascript:;javascript:;这样估计更容易你理解了,lz理解挺对的,再附个表给你,int是值类型的. ...

同学你看过《C#图解教程》这本书吧?值类型数据存放在栈里,我想问的是:GC是在赋值完成后进行内存清除,还是待整个计算完成后再进行清除呢?
回复 使用道具 举报
穆_升 中级黑马 2012-10-18 11:46:17
7#
这么底层的问题,我只是在哪看到过,没往那么深去了解,建议你学全面后再去研究这个,有好处的,我学识太浅,这次帮不上你了哈!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
前自增取加1的值,后自增用原来本身的值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马