首页 > 其他 > 详细

关于 y=(++x)+(++x); 的问题

时间:2015-04-28 22:59:31      阅读:305      评论:0      收藏:0      [点我收藏+]

设x的值为3,y=0,则表达式y=(++x)+(++x)后,y的值是( ),不同编译器会有不一样的答案。先写结果:

C++: y=10;

java: y=9;

matlab: y=6;

为什么会有这样的结果呢,到底哪个是对的?其实没有对错之分。原因是各编译器处理式子的方式不一样,这个在编译原理中我们学过。就是所谓的前缀表达式,中缀表达式,后缀表达式。什么意思呢?拿刚才的例子来说吧,C++的处理方式就是采用的后缀表达式,Java的处理方式就是采用的中缀表达式,matlab的处理方式就是采用的前缀表达式。C++先算的++x,x=4, 然后再++x, x=5,最后两个相加得10。Java是先算++x, 等于4,4再加上++4(即5)等于10。matlab是3+3=6,最后再算++。

有错的地方欢迎指正。

关于 y=(++x)+(++x); 的问题

原文:http://blog.csdn.net/sunshihua12829/article/details/45341125

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!