将代码从C++转换为C语言

 主持人谷佳霓期_426 发布于 2023-02-13 10:17

我有一个转换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- 这只是最后的位置.

1 个回答
  • 在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);
    

    2023-02-13 10:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有