i++和++i的最终解决方式

    技术2022-05-20  34

    在一个表达式中,无论i++++i出现的次数,顺序如何,也无论+-*/的混合运算如何,都遵循如下规则:

    1.       所有的i++++i的值都相等为A

    2.       A等于执行所有++i后,i的值。

     

    原因是编译如此工作:

    1.找到所有的++i,执行

    2然后找到所有的i++,执行

    3计算表达式。

     

    int i = 3;

    int i,a;

         i=3;

         a = (++i)+(i++)+(++i)+(i++); 5+5+5+5=20

         printf("a=%d /n",a);

     

         i=3;

         a = (i++)+(++i)+(i++); 4+4+4=12

         printf("a=%d /n",a);

     

         i=3;

         a = (++i)*(i++)*(++i); 5*5*5=125

         printf("a=%d /n",a);

     

         i=3;

         a = (i++)+(++i); 4+4=16

         printf("a=%d /n",a);

     

         i=3;

         a = (++i)+(i++)*(++i)*(i++)*(i++);5+5*5*5*5=630

         printf("a=%d /n",a);

     

    以上程序在vs2008,控制台程序中经过验证。


    最新回复(0)