繁体   English   中英

将C分配/条件语句转换为C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM