zoukankan      html  css  js  c++  java
  • 求两个数中的较大值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
    ",sizeof(int));
    12     printf("max(2,3)=%d
    ",max(2,3));
    13     printf("max(2,2)=%d
    ",max(2,2));
    14     printf("max(0,2)=%d
    ",max(2,0));
    15     return 0;
    16 }

     输出:

  • 相关阅读:
    浅谈常量
    运算符
    TTL与CMOS门电路
    16位CRC校验_Delphi
    DXP快捷键记录(红色为经常用到的)
    论EFMS模拟量部分采集电路的修改
    稳压二极管应用电路_转载
    TVS二极管
    TryEnterCriticalSection___Delphi
    很好用的一个翻译插件
  • 原文地址:https://www.cnblogs.com/xudong-bupt/p/3667900.html
Copyright © 2011-2022 走看看