简体   繁体   English

了解一段C代码背后的逻辑

[英]Understanding the logic behind a piece of C code

I would love if you guys could explain to me why the following piece of recursive code doesn't print the word 'test'. 如果您能向我解释一下,为什么下面的递归代码段不显示“ test”一词,我很乐意。 Thanks in advance. 提前致谢。

void drawTetriminosEachPosition(int **tetriminos, char **dBoard, int **tBoard, int i){
  char c;
  char **dBoard2;

  if(tetriminos[i] == '\0')
  {
      return;
  }    
  else
  {
     dBoard2 = dBoard;
     DrawTetrimino(tBoard, tetriminos[i], dBoard, i+65);
  }
  i++;
  return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));

  ft_putstr("test");
  if(checkChar(tBoard,tetriminos[i]))
  {
      dBoard = dBoard2;
      return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
  }     
}

Statements after a return are never executed. 返回后的语句永远不会执行。 Since the first 自第一次

return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));

does not depend on any condition, the following code is not executed. 不依赖于任何条件,因此不会执行以下代码。

When control reaches return ... it simply returns and next lines are not executed. 当控制权到达return ...它只是返回而不会执行下一行。 Maybe you missed some logic in between? 也许您错过了两者之间的某些逻辑?

As of now you can delete this part it doesn't matter 截至目前,您可以删除此部分,没关系

ft_putstr("test");
  if(checkChar(tBoard,tetriminos[i]))
  {
      dBoard = dBoard2;
      return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
  }  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM