gpt4 book ai didi

c++ - 添加 endl 修复代码

转载 作者:行者123 更新时间:2023-11-30 02:42:58 28 4
gpt4 key购买 nike

在我正在编写的程序中,只有当我有一个 cout << endl 时,某个代码块才能正常工作它开头的声明。如果它不存在,程序不会出现段错误,而只会在 100% 的情况下给出可验证的错误答案。随着cout << endl声明,它每次都有效。我实际上不知道是什么原因造成的,因为我尝试使用 cout.flush() 刷新 cout 缓冲区但它没有效果。此外,使用 cout 无效没有结束。我也仔细检查了Node的所有成员变量结构已在结构的初始化列表中初始化。如果有人可以帮助我解决这个问题,我将不胜感激!这是有问题的代码:

`    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) { }
};

最佳答案

我怀疑问题是你没有返回你的内部结果:

    if(!node->incoming[0]->visited) CheckDistinct(node->incoming[0], rec);

应该是:

    if(!node->incoming[0]->visited) return CheckDistinct(node->incoming[0], rec);
^^^^^^

cout 调用可能只是以某种方式改变代码生成(例如,编译器可能决定实际递归而不是将尾递归转换为循环,或者在某些情况下使用不同的寄存器方式,或一长串其他事情。

(需要注意的是,这个错误我见过很多次,自己也犯过几次……一点也不稀奇!)

关于c++ - 添加 endl 修复代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26583524/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com