pascal中的同时变量赋值

时间:2010-07-01 01:43:04

标签: variables variable-assignment pascal simultaneous

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

2 个答案:

答案 0 :(得分:2)

PASCAL不包含同时变量赋值。

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

你必须自己做。

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

答案 1 :(得分:0)

我对Pascal一点都不熟悉,但我找不到任何能做你想做的特殊swap功能。

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

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

编辑:更改xy时,您所做的事情也没有错。如果您需要将旧值保留为计算的一部分,那么将旧值分配给变量然后使用它就完全没问题了。