[英]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.