📄 uy.txt
字号:
a+=b & a=a+b2007-01-16 15:41闲话不说,直接上代码:
1 #include <iostream>
2
3 int main()
4 {
5 int a=10;
6 int b=2;
7 a^=b^=a^=b;
8 std::cout<<a<<'\t'<<b<<'\n';
9 a=a+b-(b=a);//a+=b-=b=a;
10 std::cout<<a<<'\t'<<b<<'\n';
11 return 1;
12 }
-----------------------------
lichao@lichao:~/Projects/temp$ g++ b.cpp
lichao@lichao:~/Projects/temp$ ./a.out
2 10
10 2
------------------------------
如果line:9变为a+=b-=b=a;
答案is:
lichao@lichao:~/Projects/temp$ g++ b.cpp
lichao@lichao:~/Projects/temp$ ./a.out
2 10
2 0
------------------------------
二者的不同:
a=a+b-(b=a)
0x08048522 <main+66>: mov 0xfffffffc(%ebp),%eax b->eax
0x08048525 <main+69>: mov 0xfffffff8(%ebp),%edx a->edx
0x08048528 <main+72>: add %eax,%edx a+b->edx
0x0804852a <main+74>: mov 0xfffffff8(%ebp),%eax a->eax
0x0804852d <main+77>: mov %eax,0xfffffffc(%ebp) eax->b
0x08048530 <main+80>: mov %edx,%eax edx->eax
0x08048532 <main+82>: sub 0xfffffffc(%ebp),%eax eax-=a
0x08048535 <main+85>: mov %eax,0xfffffff8(%ebp) eax->a
a+=b-=b=a;
0x08048538 <main+88>: mov 0xfffffff8(%ebp),%eax a->eax
0x0804853b <main+91>: mov %eax,0xfffffffc(%ebp) eax->b
0x0804853e <main+94>: movl $0x0,0xfffffffc(%ebp) 0->b
0x08048545 <main+101>: mov 0xfffffffc(%ebp),%edx .................
0x08048548 <main+104>: lea 0xfffffff8(%ebp),%eax
0x0804854b <main+107>: add %edx,(%eax)
OVER。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -