我正在尝试使用2个for
循环计算2D网格中有多少个字符。代码如下所示:
int number_of_boxes( int player, int height, int width, char**gameBoard ){
int boxCount, i , a;
for(i=0; i < (height*2) + 1 ; i++){
for ( a = 0 ; a < (width * 2) + 1 ; a++){
if(gameBoard[i][a] == (char)(player + 64)) boxCount++;
}
}
return boxCount;
}
player
变量是每个玩家的索引,但在网格中它们显示ASCII字符。
1 = A,2 = B等等,向索引添加64并将其视为char
。 if
状态打算检查ASCII字符的数组数组中的每个字符,如果找到一个实例,则添加到计数器。
由于某种原因,此函数中的if
语句传递的次数太多,当唯一可能的最大值为122
时,函数返回120
或4
。我的if
声明错了吗?
答案 0 :(得分:2)
您尚未初始化boxCount。
int boxCount, i , a;
因此,boxCount目前存储一些垃圾值。我想这就是为什么你假设if语句运行很多次。尝试初始化boxCount。
int boxCount=0, i , a;
答案 1 :(得分:0)
您错过了初始化boxCount
:
替换
int boxCount, i , a;
与
int boxCount=0, i , a;
由于未初始化值的递增未定义。