虽然C语言是大部分人接触最早的编程语言,但是i++和++i的性能问题还是会有很多人搞混,这里简单说一下。
i++; 是一个右值,而 ++i 是一个左值。
加深印象,上述的两条语句可以用下面两个函数表示。
i++ 为
i = tmp + 1;
return tmp;
return i;
不要忽略这个变量的意义,了解过 C 等“低级”语言的朋友,可能会了解变量的内部机制(重新祭奠我老去的 C 语言知识)。首先,申请(malloc)一段内存空间,然后将值塞(push,压栈)进去,最后不用了释放(free)。
大家可能在循环中会经常的使用 i++ 这样的操作。在不影响逻辑的前提下,我建议使用 ++i ,虽然这点的优化非常的小。
因此,++i的性能将比i++的性能略好。
i++; 是一个右值,而 ++i 是一个左值。
加深印象,上述的两条语句可以用下面两个函数表示。
i++ 为
function ()
{
tmp = i;i = tmp + 1;
return tmp;
}
function ()
{
i = i + 1;return i;
}
不要忽略这个变量的意义,了解过 C 等“低级”语言的朋友,可能会了解变量的内部机制(重新祭奠我老去的 C 语言知识)。首先,申请(malloc)一段内存空间,然后将值塞(push,压栈)进去,最后不用了释放(free)。
大家可能在循环中会经常的使用 i++ 这样的操作。在不影响逻辑的前提下,我建议使用 ++i ,虽然这点的优化非常的小。
因此,++i的性能将比i++的性能略好。