⑴缺点,在内存中新建了变量temp用来存数值,多占一块内存。
int a = 100;
int b = 200;
int temp = a; //temp 100
a = b; //a 200
b = temp; //b 100
⑵缺点,有可能产生越界风险,不建议使用。
int a = 100;
int b = 200;
a = a+b; //a 300
b = a-b; //b 100
a = a-b; //a 200
⑶最好的方案,节省内存空间且不会越界。用异或时,相同的数会抵消。
int a = 100;
int b = 200;
a = a^b; //a=100^200
b = a^b; //b=100^200^200 即100
a = a^b; //a=100^200^100 即200