1.为什么会出现自增运算符?
原因:
(1)可以使代码更加简练。但是,这也会使代码的可读性变差。例如:
#include <stdio.h>
void main()
{
int x = 5;
printf("%d\n", (++x) + (++x) + (++x));
}
(2)自增运算符可以使自增运算更加高效。语句i = i +1;将会涉及内存存取操作,而i++可以再寄存器中进行,后者的效率当然会比前者高,尤其涉及到循环使更是如此。
当然这也会带来一些副作用。因为不同编译器对自增运算符的解释是有差别的,从而导致同一条语句在不同的编译环境下产生不同的结果。例如:
int i = 4;
int a = (++i) + (++i) + (++i);
三个不同的编译环境的结果:
Visual C++ 6.0 sp6 :a = 19
Visual Studio 2005 :a = 21
gcc.exe (GCC) 3.4.5 (mingw-vista special) : a = 19
这样就产生了矛盾:如果平衡程序的可读性和高效性?
1.在程序中,我们应当避免出现前自增和后自增混用的情况,即屏蔽前自增和后自增的差别;
2.不要再一个复杂的表达式中过多使用自增运算符,否则会大大减弱程序的可读性,而且也会使编译结果与编译器有关从而不可移植;