我有一个转换C++代码到C的问题.我尝试了很多可能性,但没有一个工作.怎么解决?这是我的代码:这是我在C++中使用它的方式:
void Posun(int &x, int &y) //posun gulicky { if (y == 1) x != 10 ? x++ : y++; else if (y == 11) x != 1 ? x-- : y--; else if (x == 1) y != 1 ? y-- : x++; else y != 11 ? y++ : x--; }
这就是我所说的:
int Roll(int **grid, int riadky, int stlpce)//roll, vracia padnute cislo { srand(time(NULL)); int x = (rand() % 10 + 1) > 5 ? 10 : 1; int y = rand() % 11 + 1; int o = rand() % 50 + 50; for (int i = 0; i < o; i++) { //Clr(); Posun(&x,&y); //VypisGrid(grid, riadky, stlpce, x, y); printf("%d,%d", x, y); Sleep(100); } if (x == 1) return y > 1 && y < 11 ? grid[y - 1][x - 1] : grid[y - 1][x]; else if (x == 10) return y > 1 && y < 11 ? grid[y - 1][x + 1] : grid[y - 1][x]; if (y == 1 || y == 11) return grid[y - 1][x]; }
有了这个,我得到如下输出: 410,510,610,710,810,910,1010,119,118,117 ....
但是当我尝试在C编译器中运行它时,我必须从第一个函数中删除&,所以它看起来像这样:
void Posun(int x, int y) {
我得到这样的输出:510,510,510,510,510,510,510
- 这只是最后的位置.
在C中没有引用,你必须使用这样的指针:
void Posun(int* x, int* y) { if (*y == 1) *x != 10 ? (*x)++ : (*y)++; else if (*y == 11) *x != 1 ? (*x)-- : (*y)--; else if (*x == 1) *y != 1 ? (*y)-- : (*x)++; else *y != 11 ? (*y)++ : (*x)--; }
并称之为:
Posun(&x, &y);