
#includeusing namespace std; //加减乘除 void main() { int a = 1; ++a; a++;//前置和后置: 基本类型,无区别;复合类型前置返回引用不复制,效率高 a += 2;//add eax,2 a--;//add eax,1 --a;//add eax,1 a -= 2;//sub eax,2 a *= 2;//shl eax,1 a *= 3;//imul eax,dword ptr [a],3 a *= 8;//shl eax,2 a /= 2;//sar eax,1 a /= 3;//idiv eax,3 cout << a << endl; a /= 4;//sar eax,2 }
总结:
- 加减乘除指令分别是:add,sub,imul,idiv;
- 移位指令比乘除有更高的效率。
2的倍数时会用移位取代乘除。
add eax,1
为啥没用: inc eax
猜测是编译器没有加优化选项。
用release 后,聪明的编译器直接把结果8 返回了。
如下:
加了volatile 就不会优化。
volatile int a = 1;
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)