繁体   English   中英

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

[英]How do I compare two numbers for equality in Delphi?

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

如何填写上一个作业?

is_match := temp_val = val;

无论如何,我希望上面的代码只是真实代码的一小部分,因为在将temp_valval进行比较temp_val未定义temp_val

C中的相等比较运算符为== 在Delphi中,等效运算符为=

因此,您需要使用以下代码:

is_match := temp_val=val;

有趣的是,顺便说一句,C相等运算符会导致一个非常经典且难以发现的错误。 它是这样的:

if (x=0)
    DoSomething();

这里发生的是=是赋值运算符,因此x被赋值为0 ,然后进行真值检验。 并且返回false,因此从不执行DoSomething() 我相信这种潜在的混乱是Pascal选择使用:=进行分配的原因之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM