您的位置:首页 > 其它

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

2014-08-13 18:52 316 查看
#include <cstdlib>
#include <cstdio>
#include <cstring>

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: