[英]Converting C assign/conditional statement to C#
我正在将一些代码从C转换为C#。 我不确定如何最好地翻译以下两行:
if (tt = v >> 16)
{
r = (t = tt >> 8) ? 24 + LT[t] : 16 + LT[tt];
}
tt,v和t是ulong(与问题无关)。 问题是我不认为C#在一条语句中允许赋值/条件操作。
在C#中,不能将ulong隐式转换为bool。 以下行也不编译:
if ((bool)(tt = v >> 16))
这是供您if
语句使用的语句。
(tt = v >> 16) != 0
您不能轻易将int
转换为bool
。
这是直接转换:
tt = v >> 16;
if (tt != 0) {
t = tt >> 8;
r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}
一般来说,简洁的C代码在转换为C#时看起来并不好。 我建议使它更加冗长一些,以使将来的生活更轻松。 (告诉我有偏见,但是与使用较新语言的人相比,使习惯于C的人更容易受到惊吓)。
尝试这个:
tt = v >> 16;
if (tt != 0)
这应该工作:
tt = v >> 16;
if (tt != 0)
{
t = tt >> 8;
r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.