关于y+1与++y的疑问

以下是AC代码


#include
using namespace std;
int a[100][100]={0};
int main(){
    int x,y,c1,c2,n=0;
    cin>>c1>>c2;
    n=a[x=0][y=0]=1;
    while(n11])a[x][++y]=++n;
        while(x+11][y])a[++x][y]=++n;
        while(y-1>=0&&!a[x][y-1])a[x][--y]=++n;
        while(x-1>=0&&!a[x-1][y])a[--x][y]=++n;
    }
    for(int x=0;x0;y"%d ",a[x][y]);
        }
        cout<<'\n';
    }
    return 0;
}

这一部分的数组中如果把y+1换成++y就会出错,想要请问他们的原理有什么不同(y+1和++y)
我记得两个都是先计算再使用

while(n[x][y+1])a[x][++y]=++n;
        while(x+1[x+1][y])a[++x][y]=++n;
        while(y-1>=0&&!a[x][y-1])a[x][--y]=++n;
        while(x-1>=0&&!a[x-1][y])a[--x][y]=++n;
    }

img

y+1 ,表达式的值+1,例如 y = 0, x=y+1,那么y=0,x=1,
++y ,相当于y=y+1, 例如 y = 0, x=++y,那么y=1,x=1。

y+1并不会让y增加
只是表达式结果是y+1而已

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/269688
  • 这篇博客也不错, 你可以看下C语言中对于二进制数据位清0和置1操作(普通变量+数组+指针)
  • 除此之外, 这篇博客: C语言考试题中的 15. 编程实现:如果x大于0,则y为1,如果x小于0,则y为-1,如x等于0,则y为0,以下程序段中不能根据x值正确计算出y值的是 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t1jnjvvy-1627044278330)(C:\Users\98614\AppData\Roaming\Typora\typora-user-images\image-20210723181455302.png)]

    CD


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^