更新时间:2017-02-21 11:17:50浏览次数:1+次
//代码段1
int i = 0;
i++;
//代码段2
int i = 0;
++i;
//代码段1
int i = 0;
int b = i++;
//代码段2
int i = 0;
int c =++ i;
//代码段1
int i = 0;
//i的值为0
i++;
//i的值为1
//代码段2
int i = 0;
//i的值为0
++i;
//i的值为1
//代码段1
int i = 0;
int b = 0;
//i的值为0,b的值为0
b = i++;
//i的值为1,b的值为0
//代码段2
int i = 0;
int b = 0;
//i的值为0,b的值为0
b = ++i;
//i的值为1,b的值为1
我们来分析一下前置和后置++的区别。
先看看前置后置++的执行逻辑:
后置的++的执行逻辑是:当++左边紧跟的变量执行了一次表达式运算之后,才将左边紧跟的变量的值增加一。如果左边的变量没有任何可以执行的表达式运算,那么这个运算可以看做是空运算,这样再执行++,得到表达式的结果。
前置的++的执行逻辑是:前置++的享有更高的权利,所以它会先执行,不会等变量的表达式执行。所以,你不用看表达式,直接先就执行前置++,然后再看表达式。如果变量没有任何可以执行的表达式运算,那么这个运算也可以看做是空运算。结果就是前置++的结果。
int i=0;
while(i++>100);//这里参与进来的是>操作符以及常量100,产生的影响就是while循环执行的次数。
int i,j=0;
int b=++i+j++;//前置++i,后置j++
int i,j=0;
int b=++i+j++;//前置++i,后置j++
//心中开始处理
int i,j=0;
int b=++i+j++;//i的值经过前置++后的值为1,不看++了。
//演化,等价拆分
int i,j=0;
++i;//i的值为1
int b=i+j++;
//演化,等价拆分
int i,j=0;
++i;//i的值为1
int b=i+j;
j++;//j的值为-1
printf("%d %d\n",x++,++y);
x++和++y分别是后置和前置。简单演化等价拆分的结果就是:
++y;
printf("%d %d\n",x,y);
x++;
同样,前置--和后置--也是如此。
相关资讯