在帕斯卡中交换两个数字
Swap two numbers in pascal
我正在尝试交换两个值,但得到的是 Warning: Local variable "temp" does not seem to be initialized
。我想做的和我做的一样。我正在使用 fpc Main.pas
从命令行编译它。我已经尝试将临时变量初始化为 0,但它仍然显示 Fatal: there were 3 errors compiling module, stopping
.
'Main.pas'
Program Main;
procedure Main();
var
n1, n2: Integer;
begin
n1 := 5;
n2 := 10;
Swap(@n1, @n2);
writeln('n1 = ', n1);
writeln('n2 = ', n2);
end;
BEGIN
Main();
END.
'Number.pas'
unit Number;
interface
type
IntPtr = ^Integer;
procedure Swap(n1, n2: IntPtr);
implementation
procedure Swap(n1, n2: IntPtr);
var
temp: Integer;
begin
temp = n1^;
n1^ = n2^;
n2^ = temp;
end;
end.
正如您已经发现的那样,您混淆了赋值 (:=
) 和相等 (=
) 运算符。因此,
procedure Swap(A, B: PInteger);
var
Temp: Integer;
begin
Temp := A^;
A^ := B^;
B^ := Temp;
end;
其中 PInteger
定义为 ^Integer
,执行以下操作:
Swap(@Val1, @Val2); // swaps integers Val1 and Val2
但是,我建议您稍微改变一下:
procedure Swap(var A, B: Integer);
var
Temp: Integer;
begin
Temp := A;
A := B;
B := Temp;
end;
使用 var
参数更加地道,它允许您简单地编写
Swap(Val1, Val2); // swaps integers Val1 and Val2
而且它还为您提供了更多的类型安全性。
我正在尝试交换两个值,但得到的是 Warning: Local variable "temp" does not seem to be initialized
。我想做的和我做的一样。我正在使用 fpc Main.pas
从命令行编译它。我已经尝试将临时变量初始化为 0,但它仍然显示 Fatal: there were 3 errors compiling module, stopping
.
'Main.pas'
Program Main;
procedure Main();
var
n1, n2: Integer;
begin
n1 := 5;
n2 := 10;
Swap(@n1, @n2);
writeln('n1 = ', n1);
writeln('n2 = ', n2);
end;
BEGIN
Main();
END.
'Number.pas'
unit Number;
interface
type
IntPtr = ^Integer;
procedure Swap(n1, n2: IntPtr);
implementation
procedure Swap(n1, n2: IntPtr);
var
temp: Integer;
begin
temp = n1^;
n1^ = n2^;
n2^ = temp;
end;
end.
正如您已经发现的那样,您混淆了赋值 (:=
) 和相等 (=
) 运算符。因此,
procedure Swap(A, B: PInteger);
var
Temp: Integer;
begin
Temp := A^;
A^ := B^;
B^ := Temp;
end;
其中 PInteger
定义为 ^Integer
,执行以下操作:
Swap(@Val1, @Val2); // swaps integers Val1 and Val2
但是,我建议您稍微改变一下:
procedure Swap(var A, B: Integer);
var
Temp: Integer;
begin
Temp := A;
A := B;
B := Temp;
end;
使用 var
参数更加地道,它允许您简单地编写
Swap(Val1, Val2); // swaps integers Val1 and Val2
而且它还为您提供了更多的类型安全性。