【发布时间】:2013-04-08 23:03:43
【问题描述】:
我试图弄清楚这样的代码的输出是什么。顺便说一句,这不是一个真正的问题,一种理论问题,我的意思是它不是原始的 c 代码,它是一种具有 c 代码语法并通过名称参数范式传递的 PL。
int x=12,y=10;
void tswap(int pa, int pb) {
int tmp;
tmp=pa;
pa=pb;
pb=tmp;
x=x+pa;
x=x-pb;
y++;
printf("%d %d %d %d\n",pa,pb,x,y);
}
int main() {
int a=4;
tswap(x,a);
printf("%d %d %d\n",x,y,a);
tswap(++x,++y);
printf("%d %d %d\n",x,y,a);
return 0;
}
我认为第一部分的输出应该是:
-4 12 -4 11
-4 11 12
但我可以为部分 tswap (++x, ++y) 找到一个合乎逻辑的解决方案 有谁知道我该如何处理这部分?
提前致谢!
【问题讨论】:
-
这与您之前的问题有何不同? stackoverflow.com/questions/15866828/…
-
@OliCharlesworth 如您所见,我想知道在 callByName 范例的情况下代码的输出
标签: c pass-by-name