如何在Delphi中比较两个数字的相等性?

时间:2012-04-03 12:13:10

标签: c delphi if-statement

我正在将代码从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;

如何填写上一个作业?

2 个答案:

答案 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选择使用:=进行分配的原因之一。