1

我希望在 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;
4

2 回答 2

2

PASCAL 不包含同时变量赋值。

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

你必须自己做。

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

于 2010-07-01T02:46:41.177 回答
0

我对 Pascal 一点也不熟悉,但我找不到任何可以满足swap您需求的特殊功能。

无论如何,您所做的一切都是完全合理的;的任何标准实现都swap需要一个临时变量来保存正在交换的值之一。我在上面编写的代码中唯一要更改的是将变量重命名为temp,以明确该变量仅出于交换目的而临时存在:

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

编辑:更改xy. 如果您需要将旧值保留为计算的一部分,则将旧值分配给变量然后使用它是非常好的。

于 2010-07-01T02:00:02.870 回答