问答详情
源自:3-3 自增与自减运算符

为什么取值为上一个语句的值 而不是一开始的100?

#include <stdio.h>

int main()

{

    int a = 100;

    printf("x=%d\n",a++);//先取值再计算,输出100,计算后a=101

    printf("x=%d\n",++a);//之前的a=101再计算+1后取值a=102

    printf("x=%d\n",--a);//先运算再取值a=101

    printf("x=%d\n",a--);//先取值再运算,输出101,a变成100

    printf("x=%d\n",a+1);//a=100+1=101,注意这里不改变a的值

    printf("x=%d\n",a);//由第8行a=100得

    return 0;

}

为什么后面几行的取值都为上一个语句的值 而不是一开始的100?


提问者:BoNeShAkEr丶 2017-05-22 18:18

个回答

  • qq_housecarl_0
    2017-05-25 13:50:08

    因为a++等于a=a+1,实质是已经通过运算给a重新赋值了

  • qq_Dontforgotyo_0
    2017-05-22 18:35:29

    x += a++;  
    先 x = x+a;
    再a++  
    等于8
    所以  
    x = 8换行
    同理x += a++;  
    先 x = x + a;
    再a++
    x = 4 换行