今天在写题的时侯在++i与i++上遇到了麻烦,具体就是我在写一个循环语句时因为没有弄清楚i++与++i的区别而导致的错误。
之前对于i++与++i的使用都只局限于如下方式:
for(j=2; j<=9; j++)
for(j=2; j<=9; ++j)
这样使用好像两者并没有什么区别。
然而当我像下面这样用时却出了问题:
for(j=i,t=2; j<=n; j=i*(t++))
for(j=i,t=2; j<=n; j=i*(++t))
经过手动测试之后我发现了原因:
++i语句之所以把‘+’放在前面就是因为它是先进行加一;
++i语句之所以把‘+’放在前面就是因为它是先进行加一;
而i++却刚好与之相反;
所以当单独使用的时候两者都是进行了i+1的运算,但一旦你将其赋给其他变量时就会出现偏差。比如:
t=i++(i=0)//此时的i先赋值给变量t再进行加一的操作,所以t=0,i=1
t=++i(i=0) //此时的i先进行加一的操作再赋值给变量t,所以t=1,i=1