不用決策結構與關係運算實現兩數比大小的解法

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

#include<iostream>
#include<cmath>

usingnamespacestd;

intmain(void)
{
doublea, b;
cout << "請輸入數字一:\n";
cin >> a;
cout << "請輸入數字一:\n";
cin >> b;

boolisNe = ( (long)(a - b) >> 63) & 1;

doublemax = a * (1- isNe) + b * (isNe);
doublemin = a + b - max;

cout << max << endl;
cout << min << endl;
return0;
}


假設 double 和 long 是 64 bits


基本的想法就是看看 a - b 是不是負的

若是的話,那 isNe 自動轉型後就變成整數 1 了

若不是的話,那 isNe 自動轉型後就變成整數 0 了

沒有留言: