したがって、次のような for ループがあります。
for(span=N>>1;span;span>>=1)
開始条件と終了条件は次のように等しいと想定しています。
span = N>>1; //right shift N by 1 and initialize to span
while(span!=0)
{
span = span >> 1;
}
ただし、私のコードのコンテキストでは少し奇妙に思えます。前もって感謝します!
したがって、次のような for ループがあります。
for(span=N>>1;span;span>>=1)
開始条件と終了条件は次のように等しいと想定しています。
span = N>>1; //right shift N by 1 and initialize to span
while(span!=0)
{
span = span >> 1;
}
ただし、私のコードのコンテキストでは少し奇妙に思えます。前もって感謝します!
すべての反復で、0に達するまで変数スパンを2で除算します。
したがって、最初にN = 8の場合、スパンの値は4、2、1、0->終了ループになります。
それは正しいです。
span = N >> 1
、Nを1だけ右シフトするように設定します。span
、であり、これは。と同等span != 0
です。span
再び1ずつ右シフトされます。正の整数のコンテキストでは、これはと同等for(span=N/2;span>0;span/=2)
です。しかし、あなたの特定の文脈を知らなければ、これが奇妙であるかどうかについてコメントすることはできません。
短くて甘い...はい、コードを示している限り、あなたの解釈はしっかりと正しいものです。