devc++下
#include
int main(){
//关于printf中变量的输出次序以及自增自减
int i=1;
printf("%d,%d,%d,%d\n",i++,++i,i++,++i); //4,5,2,5
printf("%d\n",i); //5
i=1;
printf("%d,%d,%d,%d\n",++i,++i,++i,++i); //5,5,5,5
printf("%d\n",i); //5
i=1;
printf("%d,%d,%d,%d\n",i++,i++,i++,i++); //4,3,2,1
printf("%d\n",i); //5
/*由上可以总结出:
一个printf输出多个数据时是从右往左计算,
并且++i的值是等所有的i=i+1执行完才输出最终结果i,
而i++是根据当前计算所得i=i+1输出
*/
i=5;
printf("%d,%d,%d,%d\n",i--,--i,i--,--i); //2,1,4,1
printf("%d\n",i); //1
i=5;
printf("%d,%d,%d,%d\n",--i,--i,--i,--i); //1,1,1,1
printf("%d\n",i); //1
i=5;
printf("%d,%d,%d,%d\n",i--,i--,i--,i--); //2,3,4,5
printf("%d\n",i); //1
/*由上可以总结出:--i与++i的处理相同,i--与i++的处理相同*/
//关于printf中指向变量的指针的输出次序以及自增自减
int *pi=&i;
printf("%d,%d,%d,%d\n",(*pi)++,++(*pi),(*pi)++,++(*pi)); //4,4,2,2
printf("%d\n",i); //5
i=1;
printf("%d,%d,%d,%d\n",++(*pi),++(*pi),++(*pi),++(*pi)); //5,4,3,2
printf("%d\n",i); //5
i=1;
printf("%d,%d,%d,%d\n",(*pi)++,(*pi)++,(*pi)++,(*pi)++); //4,3,2,1
printf("%d\n",i); //5
/*由上可以总结出:
!!!!对于*pi的自增与变量i的自增时不同的
指针*pi无论是++(*pi)还是(*pi)++都是及时执行自增,再从右往左计算下一个输出
不会像变量的++i等到所有的自增执行完再输出最终的结果
*/
//关于printf中指向数组的指针的输出次序以及自增自减
int b[4]={1,2,3,4};
int *p=b;
printf("%d,%d,%d\n",*p++,*p++,*p++); //3,2,1
p=b;
printf("%d,%d,%d\n",*++p,*++p,*++p); //4,3,2
/*由上可以总结出:指向数组的指针和指向变量的指针输出类似 */
return 0;
}