私はこれまで C# を使用したことがなく、関数を C に変換しようとしていますが、この奇妙な行に到達するまではすべてうまくいっていました。誰か助けて?
out Int128 remainder;
remainder._lo |= 1; ???
Cで同じ性質のInt128構造体があると仮定すると... Cでは次のようになります
remainder._lo |= 1;
これは、1 でビットごとの OR を実行することを示しています
一部の C コンパイラは、使用できる 128 ビットの int を提供します。remainder |= 1;
これは、
remainder._lo
は何らかのタイプの整数で、|= 演算子はビットごとの OR です。
したがって、これは
reminder._lo = reminder._lo | 1
コンテキストによっては合法的な C かもしれませんが、その鍵が得られるはずです。
それは
remainder._lo = remainder._lo | 1;
where|
はビットごとの or 演算子ですが、|=
C ではそのままサポートする必要があります。
Int128
おそらく、128 ビット整数の上位 64 ビットと下位 64 ビットを格納するための_hi
とのメンバーを持つ構造体です。_lo
この行は、ビット単位または下位 64 ビットを 1 で処理しているだけで、効果的に最下位ビットをオンに切り替えています。