Member 14120682 Ответов: 1

Не удается неявно преобразовать тип 'int' в 'bool'


инт crc_register ;


если (crc_register &амп; 0х0001)
{
crc_register = crc_register >> 1;
crc_register = crc_register ^ 0xa001;
}
еще
{
crc_register = crc_register >> 1;
}

Что я уже пробовал:

Не удается неявно преобразовать тип 'int' в 'bool'

1 Ответов

Рейтинг:
7

OriginalGriff

Когда вы находите код в интернете на одном языке и пытаетесь использовать его на другом, вы должны понимать три вещи:
1) исходный язык - в данном случае C или C++
2) Язык назначения - в данном случае C#
3) Что делает код и как он это делает.

C и C++ очень похожи на C# (понятно, что C# сильно повлиял на них, когда он был разработан), но это очень, очень разные языки, которые имеют некоторый общий синтаксис. Вы не можете просто поднять код C и предположить, что он будет работать без изменений в C#!

В этом случае C не имеет понятия булевых значений - нет true или false Вместо этого он рассматривает любое ненулевое значение как истинное, а любое нулевое значение-как ложное. В C# есть логические значения и обеспечивает их использование.
Итак, это:

if (crc_register & 0x0001)
нужно что-то менять на это:
if ((crc_register & 0x0001) != 0)

Но... вы не можете ожидать, что код, даже когда он компилируется, будет работать точно так же, как оригинал, если вы не выполните все три вышеперечисленных условия!