一.  问题:

强类型语言要求我们为所有希望比较的类型都实现一个实例

int min(int a, int b) {
	return a < b ? a : b;
}
double min(double a, double b) {
	return a < b ? a : b;
}

有一种方法可替代为每个min()实例都显式定义一个函数的方法这种方法很有吸引力但是也很危险.那就是用预处理器的宏扩展设施例如  : #define min(a,b) ((a) < (b) ? (a) : (b))

在复杂调用的情况下,它的行为是不可预期的,这是因为它的两个参数值都被计算两次. 一次是在a 和b 的测试中另一次是在宏的返回值被计算期间.

#include "header.h"
#define min(a,b) ((a)<(b)?(a):(b))
int _min(const int &a, const int &b)
{
    return a < b ? a : b;
}
int main()
{int a = 101;
    int b = 201;
    int c = min(a++, b);
    cout << c <<" "<< a<<endl;  //102 103

  a = 101;
    b = 201;
    c = min(++a, b);
    cout << c <<" "<< a<<endl; //103 103
c
= _min(a, b); cout << c << " " << a << endl; //103 103 return 0; }

 

相关文章:

  • 2022-12-23
  • 2021-12-25
  • 2021-11-04
  • 2022-02-11
  • 2021-11-28
  • 2021-06-13
猜你喜欢
  • 2022-12-23
  • 2021-12-10
  • 2022-12-23
  • 2021-10-29
  • 2022-03-07
  • 2022-02-17
相关资源
相似解决方案