将 C 赋值/条件语句转换为 C#

发布于 2024-10-22 12:08:05 字数 319 浏览 2 评论 0原文

我正在将一些代码从 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))

I am translating some code from C to C#. I'm not sure how best to translate the following 2 lines:

if (tt = v >> 16)
{
    r = (t = tt >> 8) ? 24 + LT[t] : 16 + LT[tt];
}

tt, v, and t are ulongs (not really relevant to the problem). The problem is I don't think C# allows the assign/conditional operation in one statement.

In C#, one cannot implicitly convert from ulong to bool. The following line doesn't compile either:

if ((bool)(tt = v >> 16))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

哑剧 2024-10-29 12:08:05

这是您的 if 语句。

(tt = v >> 16) != 0

您无法轻松地将 int 转换为 bool

Here is the one for your if statement.

(tt = v >> 16) != 0

You cant easily cast an int to a bool.

不顾 2024-10-29 12:08:05

这是直接转换:

tt = v >> 16;
if (tt != 0) {
    t = tt >> 8;
    r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}

一般来说,简洁的 C 代码转换为 C# 时看起来不太好。我建议让它更详细一些,以便将来的生活更轻松。 (可以说我有偏见,但与使用较新语言的人相比,使用 C 语言的人更需要害怕)。

This is a direct conversion:

tt = v >> 16;
if (tt != 0) {
    t = tt >> 8;
    r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}

Generally speaking, terse C code doesn't look good when converted to C#. I suggest making it a little bit more verbose to make life easier in the future. (Call me biased, but it takes a lot more to frighten people used to C than those using newer languages).

蓦然回首 2024-10-29 12:08:05

试试这个:

tt = v >> 16;
if (tt != 0)

Try this:

tt = v >> 16;
if (tt != 0)
二智少女猫性小仙女 2024-10-29 12:08:05

这应该很简单:

tt = v >> 16;
if (tt != 0)
{
    t = tt >> 8;
    r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}

This shoud simply work:

tt = v >> 16;
if (tt != 0)
{
    t = tt >> 8;
    r = (t != 0) ? 24 + LT[t] : 16 + LT[tt];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文