⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minmax.h

📁 国外网站上的一些精典的C程序
💻 H
字号:
/***  C macros for min() and max() on any C compiler.****  C++ templates for min() and max() on any C++ compiler which supports**  templates.****  Overloaded C++ functions for min() and max() on any C++ compiler which**  doesn't support templates.****  If your compiler supports both C and C++, the appropriate behavior will**  be selected based on the value of the __cplusplus predefined macro.*/#ifndef MINMAX__H#define MINMAX__H#undef min#undef max/***  The following 2 macros are used only for C++ compilers which lack**  templates. If you use a C++ compiler which supports templates, ignore**  the rest of this section. If you're compiling standard C, rather than**  C++, you may ignore the rest of this section.****  Set SIGNED_DISTINCT to 1 for conforming C++ compilers that treat signed,**  unsigned, and "normal" types as 3 distinct entities. Set SIGNED_DISTINCT**  to 0 for older or non-conforming C++ compilers. To determine the proper**  setting for your compiler, compile MINMAX.H as a C++ source file using**  the "compile only" (usually -c) switch. If the compiler reports "already**  defined" errors, you probably need to change the value of SIGNED_DISTINCT**  to 0.****  If you still get "already defined" errors after setting SIGNED_DISTINCT**  to 0, you may either have a truly broken compiler or have some obscure**  (e.g. Zortech/Symantec's -Ju or -Jm) switch set which causes this**  behavior. As a last resort, you can set UNSIGNED_DISTINCT to 0 as well.*/#define SIGNED_DISTINCT 1#define UNSIGNED_DISTINCT 1/***  We can only use templates with newer C++ compilers compiling C++ source*/#if defined(__cplusplus) && __cplusplus #if  (defined(__SC__) && __SC__ >= 0x700) || \      (defined(_MSC_VER) && _MSC_VER > 800) || \      (defined(__WATCOMC__) && __WATCOMC__ >= 1000) || \      (defined(__BORLANDC__) && __BORLANDC__ >= 0x450)  template<class T> inline T max(T a, T b) {return (a > b) ? a : b; };  template<class T> inline T min(T a, T b) {return (a < b) ? a : b; }; #else /* no templates */  /*  ** prototypes for overloaded max() functions  */  inline char max(char a, char b)  {        return (a > b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned char max(unsigned char a, unsigned char b)   {         return (a > b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed char max(signed char a, signed char b)   {         return (a > b) ? a : b;   }  #endif  inline short max(short a, short b)  {        return (a > b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned short max(unsigned short a, unsigned short b)   {         return (a > b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed short max(signed short a, signed short b)   {         return (a > b) ? a : b;   }  #endif  inline int max(int a, int b)  {        return (a > b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned int max(unsigned int a, unsigned int b)   {         return (a > b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed int max(signed int a, signed int b)   {         return (a > b) ? a : b;   }  #endif  inline long max(long a, long b)  {        return (a > b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned long max(unsigned long a, unsigned long b)   {         return (a > b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed long max(signed long a, signed long b)   {         return (a > b) ? a : b;   }  #endif  inline float max(float a, float b) {return (a > b) ? a : b; }  inline double max(double a, double b) {return (a > b) ? a : b; }  /*  ** prototypes for overloaded min() functions  */  inline char min(char a, char b)  {        return (a < b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned char min(unsigned char a, unsigned char b)   {         return (a < b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed char min(signed char a, signed char b)   {         return (a < b) ? a : b;   }  #endif  inline short min(short a, short b)  {        return (a < b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned short min(unsigned short a, unsigned short b)   {         return (a < b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed short min(signed short a, signed short b)   {         return (a < b) ? a : b;   }  #endif  inline int min(int a, int b)  {        return (a < b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned int min(unsigned int a, unsigned int b)   {         return (a < b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed int min(signed int a, signed int b)   {         return (a < b) ? a : b;   }  #endif  inline long min(long a, long b)  {        return (a < b) ? a : b;  }  #if UNSIGNED_DISTINCT   inline unsigned long min(unsigned long a, unsigned long b)   {         return (a < b) ? a : b;   }  #endif  #if SIGNED_DISTINCT   inline signed long min(signed long a, signed long b)   {         return (a < b) ? a : b;   }  #endif  inline float min(float a, float b) {return (a < b) ? a : b; }  inline double min(double a, double b) {return (a < b) ? a : b; } #endif /* no templates */#else /* standard C macros */ #define min(x,y) (((x) <= (y)) ? (x) : (y)) #define max(x,y) (((x) >= (y)) ? (x) : (y))#endif /* __cplusplus */#endif /* MINMAX__H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -