C语言的自增,自减问题!

来源:百度知道 编辑:UC知道 时间:2024/06/17 03:04:53
main()
{
int a=1,b=1,c=1,d=1,i=1;
int apple,egg;
int blue, red;
apple=i++;
egg=++i;
blue=i--;
red=--i;
printf("%d,%d/n",apple,egg);
printf("%d,%d/n",a,b);
printf("%d,%d/n",blue,red);
printf("%d,%d/n",c,d);
}
最后结果是
1,3
1,1
3,1
1,1
谁能分析一下?

a=b++
意思是先把b的值赋给a后,b再自加1
a=++b
意思是b自加后,再把值赋给a
同理,可以推出i--和--i
因此
apple=i++ =>i=1 =>apple=1
此语句执行完后i++,i的值=2
这样egg=++i则egg=3
打印输出时,a b没有操作,自然是原数,blue和red就是3和1了

i++ i-- 在表达式中,值为i,表达式执行完才++(--);
++i --i在表达式中,值为i+1, 执行完加1之后才带入表达式;

所以

apple = 1 i=2;
egg = 3 i=3
blue =3 i=2
red = 1 i=1

apple=i++,先将i的值赋值给apple,然后i=i+1,即i增1;
egg=++i; i先增1,然后赋值给egg;
blue=i--; 先将i的值赋值给blue,然后i=i-1,即i减1;
red=--i; i先减1,然后赋值给red;

apple=i++; apple=1,先赋值,后自加 i=2
egg=++i; egg=i自加后的值,i=3
blue=i--; blue=3,赋值后 i自减 i=2
red=--i; red=i 自减值后赋值,i=1

apple=i++;此处i++作用是先对i进行操作,就是赋值给apple,在自增1;
egg=++i;此处先对i自增1在操作,由于i在此部操作前已自增了1,所以现在i的值为3,并付给egg
blue=i--;把i的值付给blue后i自减1;
red=--i;i自减以后付给red;
所以 就是这样啦

开始时i=1,由于是i++所以先将i=1赋给apple,所以i=1,然后I自增,此时i=2;然后egg=++i;i先自增再赋给egg,所以egg=3,此时I=3;后面先将i=3赋给blue,blue=3;然后自减,此时i=2;而red=i--,i先自