1。 main() { int i=3,j=3,k=3;
printf("-i++ -> %d\n",-i++); printf("i -> %d\n",i);
j++; printf("-j -> %d\n",-j); printf("j -> %d\n",j);
printf("-k -> %d\n",-k); //-i++,就相当以下过程,先取i的值,即3,再变为-3,注意不是将i的值变为-3, //而是这个表达式的值是-3,然后才是i自增1 printf("1.k -> %d\n",k); k++; //你可以认为i的自增是跳出表达式后才进行的确良 printf("2.k -> %d\n",k);
} 2。 main() { /* (i=3,i++,++i,i+5) */
int i, j,k;
j=3; //相当i=3, j++; //相当i++, j++;/* ++j,此时与j++无分别 相当++i,*/ k=j+5; /*表达式的值 i+5就是表达式的值 */
printf("1. k=%d j=%d\n",k,j);
k=(i=3,i++,++i,i+5);
printf("2. k=%d i=%d\n",k,i); } i++与++i相同地方是:i 都自增 1 不同之处,再看 main() { int i=3,j=3;
printf("1.i=%d\n",++i); printf("1.j=%d\n",j++); //不同之处,表达式的值不一样
printf("2.i=%d\n",i); printf("2.j=%d\n",j); //相同之处,最后对于变量本身结果一样 } 学编程光看书是很难理解,不动手等于零。