我正在编写一个程序,用于作业,将添加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;
}
}
}
}
}
我知道这可能不是最有效的写法,所以请避免这些答案。
答案 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)以查看问题所在