[英]Understanding the logic behind a piece of C code
如果您能向我解釋一下,為什么下面的遞歸代碼段不顯示“ test”一詞,我很樂意。 提前致謝。
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));
}
}
返回后的語句永遠不會執行。 自第一次
return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
不依賴於任何條件,因此不會執行以下代碼。
當控制權到達return ...
它只是返回而不會執行下一行。 也許您錯過了兩者之間的某些邏輯?
截至目前,您可以刪除此部分,沒關系
ft_putstr("test");
if(checkChar(tBoard,tetriminos[i]))
{
dBoard = dBoard2;
return (drawTetriminosEachPosition(tetriminos,dBoard,tBoard,i));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.