【问题标题】:output of a function which has passByName parameter passing paradigm [duplicate]具有 passByName 参数传递范例的函数的输出
【发布时间】: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) 找到一个合乎逻辑的解决方案 有谁知道我该如何处理这部分?

提前致谢!

【问题讨论】:

标签: c pass-by-name


【解决方案1】:
tswap(++x,++y) 

等同于:

++x;
++y;
tswap(x,y);

制作你的输出:

4 12 4 11
4 11 4
12 5 12 13
12 13 4

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多