2010-07-01 100 views
1

我希望在Pascal中进行同时变量赋值。pascal中的同时变量赋值

据我所知,这是不可能的。在这个问题上搜索,我可以看到很多编程语言都实现了这一点,但是我无法在Pascal中找到如何去做。

例如,在Python我可以这样做:

(x, y) = (y, x) 

在Pascal中,我需要一个额外的变量来保存x的值它去掉,这样的事情:

bubble := x; 
x := y; 
y := bubble; 

那么,Pascal中是否存在同时赋值,还是我应该将代码重写为类似上面的泡沫物?

我不仅要做掉掉;有时我必须做这样的事情:

(x,y) = (x+1,y+x) 

可以像下面这样做吗?

old_x := x; 
old_y := y; 
x := x + 1; // maybe x := old_x + 1; 
y := old_y + old_x; 
+0

您在这里寻找的术语是“交换” - 您想交换“x”和“y”的值。 – 2010-07-01 01:45:00

+1

虽然这四个陈述都可以,但我想我只是在两个方面做:'y:= y + x; x:= x + 1;' – 2010-07-02 05:34:53

回答

2

PASCAL不包含同时变量赋值。

它也不包含SWAP(X,Y)预定义过程。

你必须自己动手。

你可能要考虑购买一份[Jensen & Wirth]。它仍然是该语言的最佳参考手册。如果您使用的是Borland PASCAL系统之一,请使用随附的手册:Borland做出了一些不兼容的更改,但这些语言使得语言更易于使用。

0

我不熟悉,在所有帕斯卡尔,但我无法找到任何特殊swap函数,你想要做什么。

无论如何,你在做什么是完全合理的;任何swap的标准实现都需要一个临时变量来保存其中一个正在交换的值。我会在你上面写的代码更改的唯一一件事就是变量重命名为temp,使之清楚,该变量只用于交换的目的暂时存在:

temp := x; 
x := y; 
y := temp; 

编辑:有当你改变xy时,你的行为也没有错。如果您需要保留旧值作为计算的一部分,则将旧值分配给变量然后使用它是完全正确的。

+0

谢谢..我编辑了这个问题以超越掉期。我应该做那样的事情吗? – iduppe 2010-07-01 02:09:08