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

急急急求大神

为什么printf("%d\n",a+1);不改变a的值


提问者:老子必过 2016-07-18 12:31

个回答

  • 花开半夏123
    2016-10-26 00:01:20

    因为只有自增自减才会改变a的值

    printf("%d\n",a+1)的输出结果是101的原因是%d指的是a+1整体。

    如果第五步改变a的值,那么第六步的输出结果就不是100了。

    不知道我说清楚了吗?

  • 慕粉3670391
    2016-07-18 18:11:35

    #include <stdio.h>

    int main()

    {

        int a = 100;

        printf("x=%d\n",a++);//先取值100 下一段再运算+1。所以这段的 答案是100

        printf("x=%d\n",++a);//先运算上一段剩下的(100+1)在运算这一段的a+1,所以公式是(100+1)+1=102,答案是102

        printf("x=%d\n",--a);//先运算在取值(-1)+102=101 答案是101

        printf("x=%d\n",a--);//先取值 101 再下一段运算101 -1   所以这段 答案是101

        printf("x=%d\n",a+1);// 先运算上一段剩下的101-1 在运算这一段 ,所以公式是(101-1)+1=101  答案是101  注意;这里并不改变a的值,也就是说这一段是单纯的+1并不影响第8段运算完的结果a=(101-1),所以a还是100 然后在这段中+1

        printf("x=%d\n",a);//第9段说明a还是100

        return 0;//

    }        /*   5.   100

                  6.   102    

                  7.   101

                  8.   101

                  9.   101

                  10.  100    */


  • 有点甜的农夫
    2016-07-18 14:19:49

    它输出的还是a的值,

  • 慕的地5484958
    2016-07-18 12:45:11

    符号在后面,先取值再赋值,所以printf是a的值