当前位置: 首页 > 知识库问答 >
问题:

添加endl修复代码

杜辰龙
2023-03-14

在我正在编写的程序中,只有当我有一个cout时,某个代码块才能正常工作

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

共有2个答案

公孙新觉
2023-03-14

好吧我终于找到了。错误出现在返回语句中:

if(!node)-

我没有其他语句,如果这不是真的,它会返回,所以我想此时发生了未定义的行为。我仍然不知道为什么cout

卜凯旋
2023-03-14

我怀疑问题在于你没有返回你内心的结果:

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

应该是:

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

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

(应该注意的是,我已经看到这个错误很多次了,我自己也犯过几次……这一点都不奇怪!)

 类似资料:
  • 8.5.1 代码介绍 热图代码用于加载SiteMonitor JS热图脚本,在网页上正确添加热图代码后,即可实现收集用户的点击行为,利用热图呈现,颜色越深的区域表示点击越多,颜色越浅则表示点击少。 8.5.2 代码导出 后台路径:高阶报告-热图分析,输入分组名称和页面URL后,点击保存并获取代码即可。 导出的代码样例 热图基础代码: stm_clicki('require','heatmap',

  • 8.2.1 代码介绍 用户与网站的交互动作,可利用事件统计代码进行统计。 (简单)事件统计可支持统计3个维度,1个指标的用户交互动作, 代码如下: stm_clicki('send', 'event', '事件分类', '事件动作', '事件标签', 1); 在使用时,替换以上中文内容即可。 其中, 字段名称 数据类型 字段含义 使用注意项 Category 字符串 事件分类 必填项 Action

  • 8.1.1 代码介绍 基础统计代码用于加载SiteMonitor JS监测脚本, 是系统收数的基础。 在网页上正确添加基础统计代码后,即可实现系统诸多报表的数据收集。 8.1.2 代码导出 有以下2种方式可导出代码: 新建站点时,保存并导出基础统计代码 已有站点,通过查看后台的 设置 > 统计代码 导出的代码样例 <script> (function(a, e, f, g, b, c, d) {a

  • 本文向大家介绍经典PHP加密解密函数Authcode()修复版代码,包括了经典PHP加密解密函数Authcode()修复版代码的使用技巧和注意事项,需要的朋友参考一下 Authcode这个函数很多人都使用,这函数来自Discuz程序,用于加密解密字符串,可以设置钥匙(key)和过期时间,在很多时候都用得着。原版的函数代码可能会生成+、/、&这样的字符,导致通过URL传值取回时被转义,导致无法解密。

  • 我已经解决了如何合并两个XML文件并修改匹配的属性。 我现在正在努力解决如果file1中不存在file2节点,如何添加file2节点(基于属性名) 这是我拥有的xsl文件: 我找到了如何使用XSLT合并两个xml文件,但无法解决如何将提议解决方案应用于我的xsl。有人能帮忙吗?

  • 全部显示 所有宿主应用程序都有一个扩展接口,以便添加和设计自定义工具栏(添加内置按钮、添加作为按钮的宏,甚至给工具栏添加弹出式控件)。用 Visual Basic 代码所作的设计期修改通常用于添加或修改组合框控件。而用代码对工具栏所作的修改几乎完全属于运行时间修改(改变按钮的状态、外观、功能等等)。 对工具栏作运行时间修改 在运行时间可对工具栏作多种不同的修改。其中之一是改变命令栏按钮在工具栏上的