[英]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_val
與val
進行比較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.