gpt4 book ai didi

boolean - 得到 "Boolean"预期 "LongInt"帕斯卡

转载 作者:行者123 更新时间:2023-12-02 11:14:46 25 4
gpt4 key购买 nike

我的插入排序算法出现此错误:

insertionsort.lpr(19,17) Error: Incompatible types: got "Boolean" expected "LongInt"

这是我的代码的第 19 行

 while j > 0 and A[j]>key do            

我尝试在整个互联网上进行谷歌搜索,但找不到任何语法错误或任何内容。

这里是完整的代码(如果有帮助的话):

program instert;
uses crt;
const
N = 5;
var
i:integer;
j:integer;
key:integer;
A : Array[1..N] of Integer;


procedure insertionsort;
begin
for i := 2 to N do
begin
key := A[1];
j:= i - 1;
while j > 0 and A[j]>key do
begin
A[j+1] := A[j] ;
j := j-1;
end;
A[j+1] := key ;
end;
end;

begin
A[1]:= 9;
A[2]:= 6;
A[3]:= 7;
A[4]:= 1;
A[5]:= 2;
insertionsort;
end.

我在冒泡排序算法上也遇到了同样的错误。这是错误行

bubblesort.lpr(26,14) Error: Incompatible types: got "Boolean" expected "LongInt"

这是我的算法的第 26 行:

 until flag = false or N = 1 ;   

完整代码如下:

program bubblesort;
uses crt;

var
flag:boolean;
count:integer;
temp:integer;
N:integer;
A : Array[1..N] of Integer;

procedure bubblesort ;
begin
Repeat
flag:=false;
for count:=1 to (N-1) do
begin
if A[count] > A[count + 1] then
begin
temp := A[count];
A[count] := A[count + 1];
A[count] := temp;
flag := true;
end;
end;
N := N - 1;
until flag = false or N = 1 ;
end;

begin
A[1]:= 9;
A[2]:= 6;
A[3]:= 7;
A[4]:= 1;
A[5]:= 2;
N := 5;
bubblesort;
end.

最佳答案

在 Pascal 中, boolean 运算符 andor 的优先级高于比较运算符 >=、等等,所以在表达式中:

while j > 0 and A[j] > key do

鉴于 具有更高的优先级,Pascal 将其视为:

while (j > (0 and A[j])) > key do

0 和 A[j] 被计算为按位 and(因为参数是整数),从而产生一个整数。然后,比较 j > (0 and A[j]) 被评估为 boolean 结果,并使用 > key 进行检查,该结果是 boolean > longint。然后您会收到错误消息,表明需要使用 longint 而不是 boolean 进行算术比较。

修复它的方法是添加括号:

while (j > 0) and (A[j] > key) do ...

此声明也存在同样的问题:

until flag = false or N = 1 ;

这会产生错误,因为or的优先级高于=。所以你可以加上括号:

until (flag = false) or (N = 1);

或者,更规范的 boolean 值:

until not flag or (N = 1);    // NOTE: 'not' is higher precedence than 'or'

当对运算符的优先级有疑问时,使用括号是个好主意,因为它消除了对将要发生什么顺序操作的疑问。

关于boolean - 得到 "Boolean"预期 "LongInt"帕斯卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28125132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com