繁体   English   中英

循环无缘无故重复吗?

[英]Loop repeats for no reason?

在以下代码中,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()
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++ ) {
//                      ^

将是正确的。

当您输入if语句时,不增加j var就不会有提示。 您确定nEntries和tableSize以及正确的值吗? 如果没有,你可以在内存使用值超出哈希表[size_table]字段的值是否为出众,甚至可以创建无限循环,如果逊色,因为Ĵ永远达不到规模 VAR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM