求兩個數中的較大值max(a,b)。(不用if,>)


題目:求兩個數的較大值,不能使用if、>。

1.不使用if、>,還要比較大小,貌似就只能使用條件表達式:

  x=<表達式1>?<表達式2>:<表達式3>;  (表達式1為true時,返回表達式2;否則返回表達式3)

 

2. 本題目中使用條件表達式:

  max(a.b)=<表達式1>? b:a;  (表達式1為true時,返回b;否則返回a)

 

3.如何寫表達式1,區分a與b的大小。(不用>)

  可以使用位運算,判斷a-b的符號位。符號位為1(負數),a<b;符號位為0(正數),a>=b。

  bool運算,非0表示true,0表達false。

 

實例代碼看如下:

 1 #include<stdio.h>
 2 
 3 /**
 4 (a-b)&0x80000000
 5 32為機器,int,最高位置1
 6 使用“與“運算判斷a-b是否為非負數
 7 */
 8 #define max(a,b) (((a-b)&0x80000000)?b:a)
 9 int main()
10 {
11     printf("sizeof(int)=%d\n",sizeof(int));
12     printf("max(2,3)=%d\n",max(2,3));
13     printf("max(2,2)=%d\n",max(2,2));
14     printf("max(0,2)=%d\n",max(2,0));
15     return 0;
16 }

 輸出:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM