请说明行为

时间:2018-12-08 04:30:11

标签: c gcc

int main(){
    static int a[20];
    int i = 1;
    a[i] = i++;
    printf("\n %d %d %d \n",a[0],a[1],i);
    return 0;}

输出为0,0,2 为什么a [1]不像我一样是1。

如果我用i ++更改我

  int main(){
        static int a[20];
        int i = 1;
        a[i] = i;
        printf("\n %d %d %d \n",a[0],a[1],i);
        return 0;}

输出为0,1,1

Gcc版本为6.3.0

1 个答案:

答案 0 :(得分:0)

语言未定义在i递增之前还是之后计算a [i]。因此,您的代码具有未定义的行为。