Java 与 C++ 在表达式运算下的一点异同

Java 与 C++ 在表达式运算上的一点异同

1. java

public class Main{

    public static void main(String[] args){
        int a = 10, b =20;        
        
        a = (++b) + 0*(b = 2);
        System.out.println("a=" + a + ", b=" + b);  // a=21, b=2
                
        a = (b++) + 0*(b = 8);
        System.out.println("a=" + a + ", b=" + b);  // a=2, b=8
    }
}

 

2. c++

#include <iostream>
using namespace std;

int main(int argc,char *argv[]){
	int a = 10, b = 20;
	
	a = (++b) + 0*(b = 2);
	printf("a=%i, b=%i\n", a, b);           // a=2, b=2
	
	a = (b++) + 0*(b = 8);
	printf("a=%i, b=%i\n", a, b);           // a=8, b=9

	system("pause");
	return 0;
};

 

1 楼 dyccsxg 2010-12-25  
貌似运算过程是
1. java
   从左往右 (计算变量并用具体值依次替换b)
2. c++
   从左往右 (计算变量b)
   从右往左 (用具体值依次替换掉b)