【发布时间】:2014-03-22 12:05:02
【问题描述】:
我是 c 新手,正在尝试创建扫雷游戏。我认为我的代码在数据类型转换方面存在一些问题,但我不明白为什么。检查了这个链接
How to cast or convert an unsigned int to int in C?
并尝试在我的代码中实现信息。
我正在尝试实现一个函数,该函数返回具有地雷的 x,y 坐标 2D 数组的相邻位置的数量。
int neighbours(const Field *f, unsigned int x, unsigned int y)
{
int z = 0;
int i,j;
unsigned int a = y-1;
j =(int)a;
unsigned int b =x-1;
i = (int)b;
for(; j<=(a+2); j++){
if(j>=0 && j<=f->ysize){
for (; i<=(b+2); i++){
if ( i>=0 && i<=f->xsize && (f->places[j][i] == UNKNOWN_MINE ||f->places[j][i] == KNOWN_MINE)){
z++;
}
}
i = b;
}
}
return z;
}
【问题讨论】:
-
什么不起作用?
-
如果
x或y永远为0,那么x-1和y-1不会给你-1,因为它们是未签名的。相反,它将滚动成为INT_MAX -
您能详细说明一下吗?你有什么样的问题?您是否尝试过在调试器中逐行执行代码?
-
当我把我的车开到商店时,我从不说“它不工作,请修理它”。我说“它不起作用。当我踩刹车时,它并没有减速。请修复它。”在这里应用,“它不起作用。当我输入 X 时,结果应该是 Y,但我得到的是 Z。”
标签: c structure type-conversion minesweeper