MIN и MAX в C - PullRequest
       121

MIN и MAX в C

249 голосов
/ 09 августа 2010

Где в C определены MIN и MAX, если вообще определены?

Каков наилучший способ их реализации, максимально общий и безопасный для ввода?(Расширения / встроенные компиляторы для основных компиляторов предпочтительнее.)

Ответы [ 14 ]

2 голосов
/ 14 марта 2013

Я знаю, что парень сказал "С" ... Но если у вас есть возможность, используйте шаблон C ++:

template<class T> T min(T a, T b) { return a < b ? a : b; }

Введите safe, и никаких проблем с ++, упомянутых в других комментариях.

0 голосов
/ 07 февраля 2019

Относится к комментарию Бретта Хейла , clang начал поддерживать __auto_type около 2016 года (см. patch ).

0 голосов
/ 12 апреля 2018

Самый простой способ - определить ее как глобальную функцию в файле .h и вызывать ее в любое время, если ваша программа имеет модульную структуру с большим количеством файлов.Если нет, то double MIN(a,b){return (a<b?a:b)} - самый простой способ.

0 голосов
/ 03 июля 2013

Максимум двух целых чисел a и b равен (int)(0.5((a+b)+abs(a-b))).Это также может работать с (double) и fabs(a-b) для двойных чисел (аналогично для чисел с плавающей запятой)

...