我正在为一个位数组编写一个类。它使用unsigned char数组,我需要它从头到尾打印出数组的所有位,但它只是打印0101010 ....无限。
ostream& operator<< (ostream& os, const BitArray& a) // infinite ???
{
int arrayelement;
int print;
int i = 0;
int z = 0;
int charsize = sizeof(unsigned char);
os << "(";
for (i; i < a.arraySize; i++)
{
arrayelement = a.barray[i];
for (z; i < charsize; z++)
{
if (((arrayelement & z) == 0))
{
print = 0;
os << print;
}
else if (((arrayelement & z) == 1))
{
print = 1;
os << print;
}
}
}
os << ')';
return os;
}
答案 0 :(得分:2)
在你的内部for循环中,i
没有增加。由于i
永远不会变得大于或等于charsize
,因此它会无休止地循环。
更改for (z; i < charsize; z++)
到for (z; z < charsize; z++)
看起来像你想要的。