0

私はこれまで C# を使用したことがなく、関数を C に変換しようとしていますが、この奇妙な行に到達するまではすべてうまくいっていました。誰か助けて?

out Int128 remainder;

remainder._lo |= 1; ???
4

3 に答える 3

4

Cで同じ性質のInt128構造体があると仮定すると... Cでは次のようになります

remainder._lo |= 1;

これは、1 でビットごとの OR を実行することを示しています

一部の C コンパイラは、使用できる 128 ビットの int を提供します。remainder |= 1;

于 2012-11-22T00:04:23.317 に答える
4

これは、

remainder._lo 

は何らかのタイプの整数で、|= 演算子はビットごとの OR です。

したがって、これは

reminder._lo = reminder._lo | 1

コンテキストによっては合法的な C かもしれませんが、その鍵が得られるはずです。

于 2012-11-22T00:04:39.110 に答える
3

それは

remainder._lo = remainder._lo | 1;

where|はビットごとの or 演算子ですが、|=C ではそのままサポートする必要があります。

Int128おそらく、128 ビット整数の上位 64 ビットと下位 64 ビットを格納するための_hiとのメンバーを持つ構造体です。_loこの行は、ビット単位または下位 64 ビットを 1 で処理しているだけで、効果的に最下位ビットをオンに切り替えています。

于 2012-11-22T00:08:13.127 に答える