0

私は宿題のために、2つの8ビットの2進数を追加するプログラムを書いています。読み取った2進数の格納に配列を使用します。実際に「加算」を行う関数では、forループは実行されません。ステップスルーすると、ループの変数nの初期化が表示され、ループの最後に直接移動して終了します。これが私のコードです:

for ( int n = 7; n < 0 ; n-- )
{
    if ( carry == 0 )
    {
        if ( bin1[n] == 0 )
        {
            if ( bin2[n] == 0 )
            {
                sum[n] = 0;
                carry = 0;
            }
            else
            {
                sum[n] = 1;
                carry = 0;
            }
        }
        else
        {
            if ( bin2[n] == 0 )
            {
                sum[n] = 1;
                carry = 0;
            }
            else
            {
                sum[n] = 0;
                carry = 1;
            }
        }
    }
    else
    {
        if ( bin1[n] == 0 )
        {
            if ( bin2[n] == 0 )
            {
                sum[n] = 1;
                carry = 0;
            }
            else
            {
                sum[n] = 0;
                carry = 1;
            }
        }
        else
        {
            if ( bin2[n] == 0 )
            {
                sum[n] = 0;
                carry = 1;
            }
            else
            {
                sum[n] = 1;
                carry = 1;
            }
        }
    }
}

}

私はこれがこれを書くための最も効率的な方法ではないかもしれないことを知っているので、それらの答えを避けてください。

4

5 に答える 5

9

最初から条件がfalseであるため、ループはすぐに終了します。

for ( int n = 7; n < 0 ; n-- )

あなたはおそらく意味しました:

for ( int n = 7; n >= 0 ; n-- )
于 2012-06-28T16:57:01.307 に答える
3

が7に初期化されている場合n、それは決してありません< 0...あなたの状態は間違っています。>またはである必要があります>=

于 2012-06-28T16:56:59.283 に答える
2

ループ条件が間違っています。n0未満になることはありません。代わりにこれを試してください。

for (int n = 7; n >= 0 ; n--)
于 2012-06-28T16:57:03.670 に答える
1

((int n = 7; n < 0 ; n-- )

<は間違った方向に向けられています。どちらか:

( int n = 7; n > 0 ; n-- )

また( int n = 0; n < 7 ; n++ )

于 2012-06-28T16:57:58.613 に答える
0

7は0以上であるため、ループは実行されません。修正するには、次のように記述します。

for(int n = 7; n >= 0; --n) // note: I use --n, because n-- 
{                           // creates temporary objects 
    .....                   // and makes the program slower
}

動作しない場合は、いくつかprintfのs(またはcout、iostreamライブラリを使用している場合はs)を記述して、問題がどこにあるかを確認します。

于 2012-06-28T17:12:06.607 に答える