从汇编看i++和++i的区别:b=++a:
add [a],1;
mov eax,[a]
mov [b],eax
b=a++:
mov eax,[a]
mov [b],eax
add [a],1
mov是赋值指令,eax是寄存器由于两个内存中的变量无法直接赋值需要先存到寄存器上。简单理解为i++是先使用后自增,++i是先自增再使用,但比较笼统,i++不一定先调用后自增,比如if(i++>6) break;
此处i的值先保存到编译器自动插入的临时变量上,然后i自增,最后用临时变量的值跟6比较(调用)如果++i就不会产生临时变量。