声明没有执行

时间:2012-06-28 16:55:47

标签: c++

我正在编写一个程序,用于作业,将添加2个8位二进制数。我将使用数组存储读取二进制数。在实际执行“添加”的函数中,它不会执行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;
            }
        }
    }
}

}

我知道这可能不是最有效的写法,所以请避免这些答案。

5 个答案:

答案 0 :(得分:9)

您的条件从一开始就是假的,因此循环立即退出:

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

你可能意味着:

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

答案 1 :(得分:3)

如果n初始化为7,则永远不会< 0 ...您的情况有误。应该是>>=

答案 2 :(得分:2)

您的循环条件错误。 n永远不会少于0.试试这个:

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

答案 3 :(得分:1)

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

&lt;是错误的方式。要么:

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

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

答案 4 :(得分: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(如果使用iostream库,则为cout s)以查看问题所在