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

设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); 的问题

相关文章:

你感兴趣的文章:

标签云: