2

我是 Pascal 的新手,我正在尝试编写一个简单的程序,但是在函数之间传递值时遇到了麻烦。这是我所拥有的一小部分:

program numberConverter;

const
    maxValue = 4999;
    minValue = 1;

var num: integer;

function convertNumeral(number: integer):string;
var j: integer;
begin
if ((number < minValue) OR (number > maxValue)) then
    begin
    writeln(number);
    writeln('The number you enter must be between 1 and 4999. Please try again:');
    read(j);
    convertNumeral := convertNumeral(j);
    end
else 
 if (number >= 1000) then
convertNumeral := 'M' + convertNumeral(number -1000)
{more code here, left it out for space}
end;

begin
    writeln;
    writeln('Enter an integer between 1 and 4999 to be converted:');
    read(num);
    writeln;
    writeln(num);
    writeln(convertNumeral(num));
end.

我的问题是来自 writeln(converNumeral(num)) 的值,主要是“num”,没有传递给 convertNumeral 函数,我想知道 Pascal 是否会这样做。我认为它是因为我没有将 number 声明为变量,但是当我这样做时,我得到一个编译错误,它无法完成第二个 if 语句。谢谢你的时间。

4

1 回答 1

2

是的,值肯定会传递给函数。我保证num确实会传递给convertNumeral. 在该函数中,number获取num. 您如何观察程序的行为可能存在问题。

您对 所做的更改number(如果有)将不会反映在 中num该参数是按值传递的,因此number存储了存储在中的值的副本num;它们是两个不同的变量。如果这是您想要的,您可以使用var通过引用传递参数。

每次递归调用convertNumeral都会获取 的实例,因此一旦函数返回给调用者,number对 所做的更改(如果有)将不会出现。number每个调用都有自己的number和版本j

于 2012-04-10T22:37:02.843 回答