i++与++i的区别

i++与++i的意思都是i自身加1,不过这个两个语句却有很大的区别。

++i,就是直接在i上再加1,这个无需多解释。

i++会稍微特殊些,他会在下次执行语句,再遇到i时,才会在i身上加1。

打个比方,来看看这个语句。

int i = 2;

i = 7 + i++;

这两个语句结束后,i的值为9,如果等到下一次有语句再会用到i这个变量的话,i的值就会变成10。假如我们在刚才的语句下面再加一句话的话,就会是这样:

int i = 2;

i = 7 + i++;

int u = i + 5;

语句执行完毕后,u的值为15,因为在第3句话执行的时候,i的值就从9变成10了。

所以i++的使用,是一个非常危险的行为,可能会导致难以检查的错误,我们来看下面一个例子:

int i = 6;
i++;
if( i = 6)
{
  printf("test1\n");
}
if (i = 7)
{
  printf("test2\n");
}

输出结果为:

test1

tese2

我们可以看到,在上面这个例子中,两个if语句中的内容,都被执行了,这一点是和人们的惯性思维相悖的,所以从这一点来将的话,我们在编程的过程中,为了保证代码的安全性,应该尽可能的使用++i这样的形式,避免使用i++这样形式的代码

原文地址:https://www.cnblogs.com/zhaoX/p/4474621.html