我以前从未使用过 C#,我试图将一个函数转换为 C,一切都很顺利,直到我到达这条奇怪的线。有人帮忙吗?
out Int128 remainder;
remainder._lo |= 1; ???
假设在 C 中你有一个相同性质的 Int128 结构......在 C 中它将是
remainder._lo |= 1;
这只是说用 1 进行按位或
一些 C 编译器提供您可以使用的 128 位整数,在这种情况下,您最终只会做remainder |= 1;
这意味着
remainder._lo
是某种类型的整数,|= 运算符是按位或。
所以这相当于
reminder._lo = reminder._lo | 1
根据您的上下文,这可能是合法的 C,但这应该为您提供它的关键。
它相当于
remainder._lo = remainder._lo | 1;
哪里|
是按位或运算符,但|=
应该按原样在 C 中支持。
Int128
大概是一个结构体,有_hi
和_lo
成员来存储 128 位整数的高 64 位和低 64 位。这条线只是按位或低 64 位为 1,有效地打开最低有效位。