• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#和C++的一个有意思的差别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

看到一篇有意思的文章:http://blogs.msdn.com/lucabol/archive/2004/08/31/223580.aspx

“x+=x++”的结果是什么?如果是C++,由于C++标准没有规定运算符“+”的左右两边的子表达式的运算顺序,所以结果是未定义的。而C#标准则明确规定了“+”的两边的运算顺序是从左到右,所以是可以得到“x+=x++”的确切的值的。

比如x = 3,下面是C#编译器的解释顺序:
1、首先解释“+=”,将表达式转为“x = x + (x++)”;
2、先计算“+”左边的值:“x = 3 + (x++)”;
3、然后是“x++”,得到:“x = 3 + 3”,同时x被赋值为4;
4、最后“x = 6”,覆盖了上一步赋值结果4。

由于顺序是可以得到确定的,所以还可以得知:

“x = (x++) + x”的结果和“x = x + (x++)”的结果是不一致的。

同样x = 3,“x = (x++) + x”的结果是这样:
1、首先解释“(x++)”,表达式转为:“x = 3 + x”,同时x这时被赋值为4;
2、接着解释“+”右边,表达式转为:“x = 3 + 4”;
3、最后“x = 7”。

结论:YOU ARE NOT GOING TO WRITE THAT CODE...


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#lock的使用及注意事项发布时间:2022-07-10
下一篇:
C# 词法分析器(六)构造词法分析器发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap