自增自减

#include <stdio.h>

int main(void)
{
    int i,j,k,m,n,p;

    i = 8;
    j = 10;
    k = 12;

    //自增在操作数之前

     m = ++ i;
     printf("i = %d\n",i );  //9
     printf("m = %d\n",m );  //9

     //自增在操作之后

     n = j ++;
     printf("j = %d\n",j );  //11
     printf("n = %d\n",n );  //10

     //自减在操作之前

     p = k --;
     printf("k = %d\n",k );  //11
     printf("p = %d\n",p );  //12

     //混合运算,先初始化

    k = 12;
    m = 14;
    n = 5;

    p = (++m)*(n++)+(--k);  //15*5+11=86 ;
    printf("p = %d\n",p);

    /**
        (++m)*(n++)+(--k)
        ==> (m = ++m)*(n = n++)+(k = --k)
        ==>15 * 5 + 11
        ==>86
    */
}

/**
    在算式m=++i中,对整型变量i进行了自增运算。由于自增运算符是置于i之前,所以是先对i进行加1操作,此时i的值已不再是8,而是9,然后再将自增后的i赋给变量m,所以输出为9
    在算式p=k--中,对整型变量k进行了自减运算,由于自减运算符是置于k之后,所以是先进行赋值操作,这时p的值为12,然后再进行自减操作,这时k减为11
    在算式n=j++中,对整型变量j进行了自加运算,由于自加运算符是置于j之后,所以是先进行赋值操作,这时n的值为10,然后再进行自加操作,这时j加为11
*/

猜你喜欢

转载自www.cnblogs.com/starshine-zhp/p/12381350.html