Как сравнить два числа на равенство в Delphi? - PullRequest
1 голос
/ 03 апреля 2012

Я конвертирую код из 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 ]

12 голосов
/ 03 апреля 2012

is_match := temp_val = val;

В любом случае, я надеюсь, что приведенный выше код является лишь небольшой выдержкой из реального кода, потому что temp_val не определен в то время, когда вы сравниваете его с val.

7 голосов
/ 03 апреля 2012

Оператор сравнения равенства в C равен ==.В Delphi эквивалентный оператор - =.

Так что вам нужно использовать этот код:

is_match := temp_val=val;

Интересно, что в стороне оператор равенства C приводит к оченьклассический и трудно обнаружить ошибку.Это выглядит так:

if (x=0)
    DoSomething();

Здесь происходит то, что = является оператором присваивания, и поэтому x присваивается значение 0, которое затем проверяется на истинность.И это возвращает false, и поэтому DoSomething() никогда не выполняется.Я считаю, что эта потенциальная путаница является одной из причин, по которой Паскаль решил использовать := для назначения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...