这创造了一个无限循环,但我不知道为什么

时间:2015-04-14 00:57:27

标签: arrays operator-overloading bit-manipulation

我正在为一个位数组编写一个类。它使用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;
}

1 个答案:

答案 0 :(得分:2)

在你的内部for循环中,i没有增加。由于i永远不会变得大于或等于charsize,因此它会无休止地循环。

更改for (z; i < charsize; z++)for (z; z < charsize; z++) 看起来像你想要的。