JiaLess 发表于 2020-6-23 15:26:55

为什么是5 6而不是6 5

本帖最后由 JiaLess 于 2020-6-23 15:37 编辑

#include<stdio.h>
main()
{
        int a[]={5,8,7,6};
        int y,*p=&a;
        y=(*--p)++;
        printf("%d",y);
        printf("%d",a);
        return 0;
}

405794672 发表于 2020-6-23 15:53:25

++在后,先赋值,后自增。也就是说,你先把5赋给y,然后5再自增1变成了。所以是5,6

JiaLess 发表于 2020-6-23 16:04:52

405794672 发表于 2020-6-23 15:53
++在后,先赋值,后自增。也就是说,你先把5赋给y,然后5再自增1变成了。所以是5,6

先输出的是y,为什么a0是6

405794672 发表于 2020-6-23 16:07:07

JiaLess 发表于 2020-6-23 16:04
先输出的是y,为什么a0是6

你的y不就是a?你输出的是两个 a【0】。先把a的值给y, 然后a的值加1变成6。原因就是++在后。
++在前才是先把a加1变成6,然后赋给y
页: [1]
查看完整版本: 为什么是5 6而不是6 5