当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#陷阱int i = 10; i += i++; i =

ASP.NET
asp.net 数据库的连接和datatable类
代码实现打印功能(asp.net+javascript)
asp.net 读取xml文件里面的内容,绑定到dropdownlist中
asp.net 执行事务代码
asp.net 对中文汉字的加密与解密代码
asp.net 下载文件时输出文件内容
asp.net TextBox控件设置ReadOnly后,不能回传。
c# 执行事务函数代码
asp.net 面试 笔试题目[附答案]
asp.net利用google的api做翻译
asp.ne去除html的函数代码
C# 添加图片水印类实现代码
Silverlight融合ajax实现前后台数据交互
mssql 存储过程调用C#编写的DLL文件
asp.net 需要登陆的网站上下载网页源代码和文件
asp.net cookie的操作,写入、读取与操作
asp.net textarea换行函数代码
.NET发起web请求时维持Session
asp.net 身份验证(最简单篇)
asp.net 身份验证(分目录验证篇)

ASP.NET 中的 C#陷阱int i = 10; i += i++; i =


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 160 ::
收藏到网摘: n/a


参加某公司的笔试时的一道题目:int i = 10; i += i++; i = ?。当时我写了21。但当我在C#中写了如下代码测试时
static void Main(string[] args) { int i = 10; i += i++; Console.WriteLine(i); Console.Read(); }
编译器告诉我,结果是20。为什么!我错了吗?我开始纳闷了。我赶紧用VC(Visual Studio.net2003)重新编了一段测试代码,如下:
int _tmain(){ int i = 10; i += i++; Console::WriteLine(i); Console::Read(); return 0;}
这次,结果是21。奇怪了啊,为什么同样是i += i++,其结果是不一样的呢?
最终结论:语言差异
C# does have explicit rules around this behavior. (left to right)C++ does not (problem of the C++ language, not the compiler)