一句话看C++与Java之间的区别
2014-04-25 19:42
232 查看
在学习Java的过程中,我发现同样一条语句,C++和Java下有不同的执行结果
int x = 1;
x = x++;
print(x);
那么在C++下,程序输出结果为2;
而在Java下,程序输出结果却为1。
其实在语法上都是正确定义了++运算符的优先级,而导致其二者运算结果的不同,究其原因,是编译器的区别,因为在C\C++的编译器中,将等式右边表达式的值放入了寄存器中,也没有严格按照运算符的优先级来参与运算,所以等式左边的值就等于表达式的值为1,然后再执行++操作,最后X即为2;而在Java\C#的编译器中,是严格按照++运算符的优先级来参与运算的,因为++在表达式右侧,所以先将1的值存入栈中,然后执行++操作,X变为2,最后才将栈中的值1赋值给X,所以X的值还是等于1。
在此,也要非常感谢网友@Sandy的博客:http://www.cnblogs.com/Sandy945/archive/2011/06/06/2073613.html
给我们提供了一个可靠的参考解说。
int x = 1;
x = x++;
print(x);
那么在C++下,程序输出结果为2;
而在Java下,程序输出结果却为1。
其实在语法上都是正确定义了++运算符的优先级,而导致其二者运算结果的不同,究其原因,是编译器的区别,因为在C\C++的编译器中,将等式右边表达式的值放入了寄存器中,也没有严格按照运算符的优先级来参与运算,所以等式左边的值就等于表达式的值为1,然后再执行++操作,最后X即为2;而在Java\C#的编译器中,是严格按照++运算符的优先级来参与运算的,因为++在表达式右侧,所以先将1的值存入栈中,然后执行++操作,X变为2,最后才将栈中的值1赋值给X,所以X的值还是等于1。
在此,也要非常感谢网友@Sandy的博客:http://www.cnblogs.com/Sandy945/archive/2011/06/06/2073613.html
给我们提供了一个可靠的参考解说。
相关文章推荐
- java 与 c++ 、 C# 之间的区别与联系
- C++与Java之间的区别
- 比较java c++ 对象之间的区别(内存)
- C++与Java之间的区别
- c/c++/java之间的区别
- java与c/c++之间的区别
- java与C/C++之间的区别
- C/C++、JAVA、C#之间的关系和区别?
- 让我们来比较C#,C++和Java之间重写虚函数的区别
- 学习C++与Java之间的区别
- c++ 和c#之间的区别
- java 和C++ 多态机制区别
- java和c++的区别
- java和C++的区别
- Java 查看器 和 Java Plug-in 查看器之间的区别
- java, C++ 指针和引用区别
- Java 和 C++ return 对象、数组的区别
- 程序员面试金典: 9.13 C和C++ 13.4深拷贝和浅拷贝之间有何区别?请说明两者的用法。
- Java与C++程序在编译和运行上的区别
- java与c++的区别