Apophis
Apophis

Reputation: 563

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'. 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));
  }     
}

Upvotes: 0

Views: 135

Answers (2)

user2736738
user2736738

Reputation: 30926

When control reaches return ... it simply returns and next lines are not executed. 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));
  }  

Upvotes: 1

koalo
koalo

Reputation: 2323

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.

Upvotes: 2

Related Questions