在我正在編寫的程序中,如果我在其開始處有一個cout << endl
語句,則某個代碼塊才能正常工作。如果它不在那裏,程序不會出現段錯誤,但只是在100%的時間內給出可驗證的錯誤答案。隨着cout << endl
聲明,它每次都有效。我實際上不知道是什麼導致這種情況,因爲我試過用cout.flush()
來刷新cout緩衝區,但它沒有效果。此外,如果沒有endl,則無法使用cout
。我也進行了double檢查,並且Node
結構的所有成員變量都已在結構的初始化程序列表中初始化。如果有人能幫助我,我會非常感激!這是有問題的代碼片段:添加endl修補程序代碼
` bool Board::CheckDistinct(Node* node, int* rec) {
cout << endl; // if I comment this line out, it doesn't work correctly
if(node->incoming.size() > 1) {
Node* rec_node = node->incoming[rand() % node->incoming.size()];
*rec = rec_node->row * num_cols() + rec_node->col;
return false;
}
else if(node->incoming.size() == 0) return true;
else {
node->visited = true;
if(!node->incoming[0]->visited) CheckDistinct(node->incoming[0], rec);
}
}
下面是Node
結構的代碼(如果有幫助):
struct Node {
int val, row, col, dist;
bool visited, is_white_hole, is_black_hole;
Node* outgoing[4];
std::vector<Node*> incoming;
Node(int val_, int row_, int col_) :
val(val_), row(row_), col(col_), dist(-1),
visited(false),
is_white_hole(true), is_black_hole(true) { }
};
您使用的是圖書館嗎? – Etixpp 2014-10-27 08:29:03
您的預期產出是什麼,實際情況如何?你在哪裏以及如何產生所述輸出? 「它給出了錯誤的答案」沒有幫助。 – BeyelerStudios 2014-10-27 08:30:05
你可以給上下文調用函數嗎? – H4kor 2014-10-27 08:40:33