关于不同语言的参数执行顺序问题

#include 
#include 
#include 

int t1() {
    printf("t1\n");
    return 1;
}

int t2() {
    printf("t2\n");
    return 2;
}   

void t3(int a, int b) {
    printf("t3\n");
    printf("#%d#%d\n", a, b);
}   

void t4() {
    t3( t1(), t2() );
}

int main() {
    t4();
}

对于C、C++等,参数是从右往左进行解析的,结果:

wsdc@wsdc-server:~/Document/cpp$ ./test1 
t2
t1
t3
#1#2


对于Java,参数解析是从左往右进行的:

abstract class Test {
	public abstract void m1();
	public void solve(String a) {
		m1();
		System.out.println("in solve " + a);
	}
}

class TestImpl extends Test{
	public void m1() {
		System.out.println("m1");
	}
	public String t1() {
		System.out.println("t1");
		return "t1";
	}
	public String t2() {
		System.out.println("t2");
		return "t2";
	}
	public void t3(String a, String b) {
		System.out.println("#" + a + "#" + b);
	}
	public void t4() {
		t3(t1(), t2());
	}
}

public class Main {
	
	public static void main(String[] args) {
		new TestImpl().t4();
	}
	
}

其执行结果是:

t1
t2
#t1#t2


你可能感兴趣的:(编程语言)