我是 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 语句。谢谢你的时间。
是的,值肯定会传递给函数。我保证num
确实被传递到convertNumeral
。在该函数内,number
获得其中存在的任何价值num
。也许您观察程序行为的方式存在问题。
您所做的更改number
,如果有的话,不会反映在num
。参数已传递by value, so number
存储一个copy存储在的值num
;它们是两个不同的变量。您可以使用var
通过引用传递参数,如果这是您想要的。
每次递归调用convertNumeral
gets a new的实例number
,因此进行了更改number
,如果有的话,一旦函数返回调用者就不会出现。每个调用都有自己的版本number
and j
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)