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

求解(求姐)

为什么左边例题中的  printf("%d、n",a);  中a的值不受上面的影响啊啊啊啊

提问者:1212520 2017-03-07 20:51

个回答

  • 慕粉1751577510
    2017-03-07 21:15:05
    已采纳

    受影响了呢,你注意到没,a一共被赋值5次,进行了4次运算,流程是这样的

    int a=100; //这条给a赋值100;

    printf("%d\n", a++); //在这条语句a先取值再运算,于是会先取a的值100输出,然后再进行运算,这条语句执行完后a=100+1=101;

    printf("%d\n", ++a);//在这条语句a运算以后再取值,也就是先进行a=a+1=101+1=102,再将运算过后的a的值进行输出,即102(这时a的值已经为102了);

    printf("%d\n", --a);//这条语句同上,也是a运算后再取值,先进行a=a-1=102-1=101,再将运算过后的a的值输出,即101(此时a的值已经变化为101了);

    printf("%d\n", a--);//这条语句的话是先取值再运算,也就是先将101这个值输出,输出后再对a进行运算,即a=a-1=101-1=100(运算过后a这时的值为100);

    printf("%d\n", a+1);//这一条语句是不会对a的值有影响的,只是输出结果会变为100+1即101,但是a的值还是100;

    printf("%d\n", a);//所以最后a的值为100;

  • qq_隐形人_6
    2017-05-23 00:07:47

    看其他解答一脸懵逼,看这茅塞顿开

  • itme_BJV
    2017-03-11 17:23:26

    上面的a++a--这些事有永祥的,只不过a+1只是暂时加1,就是那个语句是一个表达式,不是值,1+1以后等于2,那1还是1不是2,表达式a2=a1+1,a1加上去以后a2变了,所以是不一样的

  • qq_待我强大_0
    2017-03-07 20:56:25

    a没有声明赋值吗?