今天看到有朋友在群里讨论i++与++i的区别,这里小编发表一些自己对于两者区别的解释。
i--与--i的区别和i++与++i的区别是一样的,我们理解了i++与++i的区别,同样也就理解了i--与--i的区别.
计算上的区别:i++ 先计算,再将i自身的值+1。
++i 先将i自身的值加+1,再参与计算。
我们来看一个示例:
static void Main(string[] args)
{
int i = 2;
int j = i + (i++);
Console.WriteLine(j);
Console.WriteLine(i);
}
这个打印出来会是什么结果呢?读者可以先根据自己的理解算出打印值来,我们再来分析。
根据我们上面的讲解,i++,是先计算,然后再将自身的值+1,那么上面的示例实际上就是:
static void Main(string[] args)
{
int i = 2;
int j = i+i;
int i=i+1;
Console.WriteLine(j);
Console.WriteLine(i);
}
打印出来的结果应该就是
4
3
测试,结果正确!
我们再来看看++i的示例:
static void Main(string[] args)
{
int i = 2;
int j = i + (++i);
Console.WriteLine(j);
Console.WriteLine(i);
}
前面有讲过,++i,是先将i自身的值加+1,再参与计算,那么上面的示例实际上就是:
static void Main(string[] args)
{
int i = 2;
int i=i+1;
int j = i+i;
Console.WriteLine(j);
Console.WriteLine(i);
}
那打印出来的结果应该就是:
5
3
测试,结果正确!
我们理解了i++与++i的实际运算过程,那么i++与++i究竟有没有本质上的区别的呢?
本质上的区别:++i不会产生临时对象
i++在返回时会有一个临时对象的创建
所以,在++i和i++ 效果相同的时候,最好使用++i?