codecamp

只使用两个参数交换两值

1.使用减法交换两值

int a = 10, b = 12;
a=b-a; //a=2;b=12
b=b-a; //a=2;b=10
a=b+a; //a=10;b=10
//分析:
a = b-a//以记录差为出发点
b = b-(b-a) = a
a = b-(b-a) + b-a = a + b-a

2.使用加法交换两值

int a = 10, b = 12;
a=a+b=22;
b=a-b=10;
a=a-b=12;
//分析:
a = a+b//以记录和为出发点
b = a+b-b = a;
a = a+b - a+b-b = a+b - a;

3.使用按位异或交换两值

int a = 10, b = 12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
//分析:
a = a^b//原理与记录a、b的和或差相同
b = a^b^b = a//注意:a^b^b = a
a = a^b ^ a^b^b = b//注意:a^b = b^a
手写服务器httpserver
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }