在下面的代码中,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()
答案 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