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)
#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有不同的类型会爆炸