Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在Delphi中比较两个数字是否相等?_C_Delphi_If Statement - Fatal编程技术网

C 如何在Delphi中比较两个数字是否相等?

C 如何在Delphi中比较两个数字是否相等?,c,delphi,if-statement,C,Delphi,If Statement,我正在将一段代码从C转换为Delphi,但我仍停留在代码的最后一行: BOOL is_match = FALSE; unsigned int temp_val; unsigned int prev_val = 0; is_match = (temp_val == val); is_match := temp_val=val; 我只能转换这么多: var is_match: boolean; temp_val: cardinal; prev_val: cardinal;

我正在将一段代码从C转换为Delphi,但我仍停留在代码的最后一行:

 BOOL is_match = FALSE;
 unsigned int temp_val;
 unsigned int prev_val = 0;

 is_match = (temp_val == val);
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;

如何填写上一份作业?

是否匹配:=temp\u val=val


无论如何,我希望上面的代码只是真实代码的一小部分,因为当您将其与
val
进行比较时,
temp\u val
是未定义的:=temp\u val=val


无论如何,我希望上面的代码只是真实代码的一小部分,因为当您将其与
val
进行比较时,
temp\u val
是未定义的。在Delphi中,等效运算符为
=

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

 BOOL is_match = FALSE;
 unsigned int temp_val;
 unsigned int prev_val = 0;

 is_match = (temp_val == val);
is_match := temp_val=val;

有趣的是,作为旁白,C相等运算符导致了一个非常经典且难以发现的错误。事情是这样的:

if (x=0)
    DoSomething();

这里发生的情况是
=
是赋值运算符,因此
x
被赋值为
0
,然后进行真值测试。它返回false,因此永远不会执行
DoSomething()
。我相信这种潜在的混淆是Pascal选择使用
:=
赋值的原因之一。

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

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

 BOOL is_match = FALSE;
 unsigned int temp_val;
 unsigned int prev_val = 0;

 is_match = (temp_val == val);
is_match := temp_val=val;

有趣的是,作为旁白,C相等运算符导致了一个非常经典且难以发现的错误。事情是这样的:

if (x=0)
    DoSomething();

这里发生的情况是
=
是赋值运算符,因此
x
被赋值为
0
,然后进行真值测试。它返回false,因此永远不会执行
DoSomething()
。我相信这种潜在的混淆是Pascal选择使用
:=
进行赋值的原因之一。

另一个原因是操作符
==
看起来很滑稽。事实上,在纯数学中,你不会写‘如果a==0,那么特征值…’。另一方面,在数学中,定义一个新的量时,经常使用“:=”。@Andreas是的,它花了74秒,所以我显然是在休息。C用“==”表示相等,几乎乞求开发人员把事情搞砸,(我已经做了很多次了,我记不清了)。Delphi没有这个问题,但是弥补了这个问题,没有警告“myObject.create”而不是所需的“myObject:=TmyObject.create”:(myObject.create总是导致立即繁荣。这很容易修复。如果(x=0)可能更令人反感。另一个原因是运算符
==
看起来很有趣。事实上,在纯数学中,你不会写“如果a==0,那么特征值…”。另一方面,在数学中,当你定义一个新的量时,经常使用“:=”。@Andreas是的,它花了74秒,所以我显然是在休息日。C用“==”表示相等,almosDelphi不存在这个问题,但它没有警告“myObject.create”,而不是所需的“myObject:=TmyObject.create:”:((myObject.create总是导致立即繁荣。这很容易修复。if(x=0)可能更令人讨厌。