循环重复无缘无故?

时间:2014-07-26 12:02:17

标签: c++

在下面的代码中,cout语句(有时)重复而不退出if语句而不在j ++中递增j。有时循环的工作方式与预期的一样(j ++每个cout都会增加一次并且语句退出)。我看了这个(并看了......),无法弄清楚我做错了什么。有什么想法吗?

   void SlipHash::outputHashTable() {
      ios_base::fmtflags fmtflg = cout.flags();
      const int size = min(nEntries, tableSize);
      for ( int i = 0, j = 0; j < size; i++ ) {
         if (hashTable[i]) {
            j++;
            cout << left << setw(27) << "SlipHash::outputHashTable[" << dec << i << "] "
                 << hex << hashTable[i] << endl;
         }
      }
      cout.flags(fmtflg);
   }; // void SlipHash::outputHashTable()

2 个答案:

答案 0 :(得分:2)

for ( int i = 0, j = 0; j < size; i++ ) {

您似乎错误输入了;;

for ( int i = 0, j = 0; j < size; j++ ) {
//                                ^

for ( int i = 0, j = 0; i < size; i++ ) {
//                      ^

是正确的。

答案 1 :(得分:0)

当您输入if语句时,如果没有增加j var,则无法拥有cout。你确定nEntries和tableSize和正确的值?如果不是,你可以在hashTable [size_table]字段中使用内存中的值,如果值更高,或者甚至创建无限循环,如果因为j永远不会达到 size var