0

我以前从未使用过 C#,我试图将一个函数转换为 C,一切都很顺利,直到我到达这条奇怪的线。有人帮忙吗?

out Int128 remainder;

remainder._lo |= 1; ???
4

3 回答 3

4

假设在 C 中你有一个相同性质的 Int128 结构......在 C 中它将是

remainder._lo |= 1;

这只是说用 1 进行按位或

一些 C 编译器提供您可以使用的 128 位整数,在这种情况下,您最终只会做remainder |= 1;

于 2012-11-22T00:04:23.317 回答
4

这意味着

remainder._lo 

是某种类型的整数,|= 运算符是按位或。

所以这相当于

reminder._lo = reminder._lo | 1

根据您的上下文,这可能是合法的 C,但这应该为您提供它的关键。

于 2012-11-22T00:04:39.110 回答
3

它相当于

remainder._lo = remainder._lo | 1;

哪里|是按位或运算符,但|=应该按原样在 C 中支持。

Int128大概是一个结构体,有_hi_lo成员来存储 128 位整数的高 64 位和低 64 位。这条线只是按位或低 64 位为 1,有效地打开最低有效位。

于 2012-11-22T00:08:13.127 回答