gpt4 book ai didi

c - C编程AT89C51中的局部变量

转载 作者:行者123 更新时间:2023-11-30 20:50:33 25 4
gpt4 key购买 nike

我试图在函数中使用递归,为此我必须使用局部变量。编译器在我定义局部变量的行中给出错误 c141。

int minimax(int board[9], int player) {
int winner;
winner = win(board);
if (winner != 0) return winner*player;

int moveminimax;
moveminimax = -1;
int scoreminimax;
scoreminimax = -2;
int i3;
for (i3= 0; i3 < 9; ++i3) {//For all moves,
if (board[i3] == 0) {//If legal,
board[i3] = player;//Try the move
int thisScore;
thisScore = -minimax(board, player*-1);
if (thisScore > scoreminimax) {
scoreminimax = thisScore;
moveminimax = i3;
}board[i3] = 0;//Reset board after try
}
}
if (moveminimax == -1) return 0;
return scoreminimax;
}
6-3-17 4 01pm.c(116): error C141: syntax error near 'int'
//c(116) is the where int winner is defined

当我在程序开始时全局定义变量时,错误消失了。

最佳答案

我的猜测是 Keil C 编译器不遵循 C99 标准,其中变量可以在任何地方定义,而是遵循较旧的 C89 标准,其中局部变量只能在开头定义 block 。

这意味着代码如下

int winner;
winner = win(board);
if (winner != 0) return winner*player;

int moveminimax;
moveminimax = -1;
int scoreminimax;
scoreminimax = -2;
int i3;

无效,因为它包含混合声明和语句。

通过在声明变量时初始化变量,可以完全删除其中两条语句,从而留下需要移动的函数调用和 if 语句。

试试这个:

int winner;
int moveminimax = -1;
int scoreminimax = -2;
int i3;

winner = win(board);
if (winner != 0) return winner*player;

关于c - C编程AT89C51中的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44343374/

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