多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > [置頂] 定義一個宏,比較兩個數a、b的大小,不能使用大于、小于、if語句 以及 不用 第三個數,交換 a,b的值

[置頂] 定義一個宏,比較兩個數a、b的大小,不能使用大于、小于、if語句 以及 不用 第三個數,交換 a,b的值

來源:程序員人生   發布時間:2015-03-18 10:02:21 閱讀次數:3151次

無意中 1篇博文,介紹這個問題,引發了我的興趣。

博文中 介紹了 3種方法:

1.

#define max(a,b) ((((a)-(b))&(1<<31))?(b):(a))

2.

#define max(a,b) ((((long)((a)-(b)))&0x80000000)?(b):(a))

3

#define max(a,b) (((abs((a)-(b)))==((a)-(b)))?(a):(b))

第1種方法 和第2種方法 的原理都是1樣的,就是 根據 (a) - (b) 的結果 的 符號位 來判斷 的,但是 疏忽了 類型的問題,在不同的機型上 int 可以是 16 位 或 32 位,

long 可以是 32 位 或 64位 ,用 1<<31 或 0x80000000   和  (a) - (b) 來進行 & 運算 都是 不適合的。


第3種方法正好解決了 上面的問題。但是 疏忽了 浮點型問題。


所以 最好的方法 是 將 abs 換成 fabs

#define max(a,b) (((fabs((a)-(b)))==((a)-(b)))?(a):(b))


下面 來講另外一個話題: 假定 有 int a = 7 , int b = 8 ,不用 第3個數 來 交換 a,b

答案:

a = a + b; b = a - b; a = a - b;




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 视频在线h | 91精品一区二区三区在线 | 日本一区二区三区欧美在线观看 | 性爱视频在线播放 | 国内精品久久影院 | 最近最新的中文字幕大全3 最近最新高清免费中文字幕 | 国产精品免费大片一区二区 | 中国欧美一级毛片免费 | 国产69精品久久久久9999 | 欧美高清在线不卡免费观看 | 一区一区三区产品乱码 | 最新精品亚洲成a人在线观看 | 99r8这里精品热视频免费看 | 日本自己的私人影院 | 亚洲成a人v欧美综合天堂软件 | 国产精品亚洲第一区二区三区 | 精品亚洲欧美高清不卡高清 | 一区二区视频在线观看免费的 | 欧美精品免费一区欧美久久优播 | 99视频精品免视3 | 校园春色 亚洲 | 亚洲另类在线观看 | 国产精品久久一区二区三区 | 在线观看免费亚洲 | 高清视频在线播放ww | 校园春色 自拍偷拍 | 国产成年网站v片在线观看 国产成人 免费观看 | 国产视频久久久久 | www.97av| 亚洲国产成人久久一区www | 欧美一区二区aa大片 | 成人欧美一区二区三区 | 一级在线免费视频 | 久草在线网址 | 亚洲区免费 | 欧美黑人巨大videos精 | 一个色亚洲 | 午夜欧美精品久久久久久久 | 国产福利在线观看精品 | 日本二区 | 一级毛片不卡片免费观看 |