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

这些加加减减的很疑惑

为什么刚才在解析中说:无论是a++还是++a都等同于a=a+1,在表达式执行完毕后a的值都自增了1,无论是a--还是--a都等同于a=a-1,在表达式执行完毕后a的值都自减少1。

那么为什么下面举的这个例子第一个就和解析里面说的不一样啊,如果按照a++和++a都等同于a=a+1的话,那例题中第一个答案应该输出的是101才对啊,因为a=100,那么a++=a+1 把a=100代入进去算出来不就是101吗?为何例题输出的是100?

提问者:王家涛IT 2015-01-10 14:59

个回答

  • onemoo
    2015-01-11 00:24:10
    已采纳

    i++ 是先返回 i 的值,再 i = i + 1;

    ++i 是先 i = i + 1;再把 i 值返回。

    以示例代码为例:

    int x = 0;    // x 值为 0
    // 调用printf时,printf想要知道第二个参数的值,这第二个参数就是“++x”
    // 那么会先把x的值加上1(x为1),再把x的值(就是1)返回给printf用
    printf("x=%d\n",++x); 
    // 这一句printf同样想知道它的第二个参数的值,就是“x++”
    // 那么会先把x的值返回给printf用(值还是1),再把x的值加上1(这时i为2)
    printf("x=%d\n",x++);
    // 也就是说如果再次取x的值的话,就会得到2
    printf("x=%d\n", x);  // 这一句会输出2


       


  • _潇潇暮雨
    2015-01-10 15:07:10

    这个答案不错:http://zhidao.baidu.com/question/424256398645419812.html?qbl=relate_question_0&word=i%2B%2B%BA%CD%2B%2Bi%B5%C4%C7%F8%B1%F0&optimi=4