Где в C определены MIN и MAX, если вообще определены?
MIN
MAX
Каков наилучший способ их реализации, максимально общий и безопасный для ввода?(Расширения / встроенные компиляторы для основных компиляторов предпочтительнее.)
Я знаю, что парень сказал "С" ... Но если у вас есть возможность, используйте шаблон C ++:
template<class T> T min(T a, T b) { return a < b ? a : b; }
Введите safe, и никаких проблем с ++, упомянутых в других комментариях.
Относится к комментарию Бретта Хейла , clang начал поддерживать __auto_type около 2016 года (см. patch ).
clang
__auto_type
Самый простой способ - определить ее как глобальную функцию в файле .h и вызывать ее в любое время, если ваша программа имеет модульную структуру с большим количеством файлов.Если нет, то double MIN(a,b){return (a<b?a:b)} - самый простой способ.
.h
double MIN(a,b){return (a<b?a:b)}
Максимум двух целых чисел a и b равен (int)(0.5((a+b)+abs(a-b))).Это также может работать с (double) и fabs(a-b) для двойных чисел (аналогично для чисел с плавающей запятой)
a
b
(int)(0.5((a+b)+abs(a-b)))
(double)
fabs(a-b)