我正在将代码从C转换为Delphi,但我仍然停留在此代码的最后一行:
BOOL is_match = FALSE;
unsigned int temp_val;
unsigned int prev_val = 0;
is_match = (temp_val == val);
我只能转换这么多:
var
is_match: boolean;
temp_val: cardinal;
prev_val: cardinal;
begin
is_match := false;
prev_val := 0;
is_match := ????
end;
如何填写上一个作业?
答案 0 :(得分:12)
is_match := temp_val = val;
无论如何,我希望上面的代码只是实际代码的一小部分,因为temp_val
在您与val
进行比较时未定义。
答案 1 :(得分:7)
C中的等式比较运算符是==
。在Delphi中,等效运算符为=
。
所以你需要使用这段代码:
is_match := temp_val=val;
有趣的是,顺便说一句,C等值运算符导致了一个非常经典且难以发现的错误。它是这样的:
if (x=0)
DoSomething();
这里发生的是=
是赋值运算符,因此x
被赋值为0
,然后进行真值测试。并返回false,因此永远不会执行DoSomething()
。我认为这种潜在的混淆是Pascal选择使用:=
进行分配的原因之一。