C/C++宏,用于在不使用三元运算符的情况下查找最多两个数字

Ani*_*Ani 5 c c++ c-preprocessor

我遇到了一个面试问题,内容如下:

"编写一个简单的C/C++宏来查找最多两个数字而不使用std库或三元运算符".

我需要你帮助解决这个问题.我知道这是微不足道的,但我找不到它.所以,在这里发布.

#include<iostream>
#define max(x,y) /*LOGIC HERE*/
using namespace std;

void main()
{
    int a = 98453;
    int b = 66394;  
    cout<<max(a,b);
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*ich 26

使用布尔运算得到0或1然后只需将它们加起来:

#define max(x,y) (((int)((x)<(y)) * (y)) + ((int)((y)<=(x)) * (x)))
Run Code Online (Sandbox Code Playgroud)


owe*_*sss 5

#include <iostream>

#define max(x, y) [a = x, b = y](){ if (a<b) return b; else return a; }()

int main() {
    using namespace std;

    int a = 10;
    int b = 20;
    cout << max(10, 20);
    cout << max(a, b);
};
Run Code Online (Sandbox Code Playgroud)

一个只为了好玩的解决方案:>用c ++ 14编译

如果x,y有不同的类型会爆炸