为什么下面的代码不工作?它打印INT_MAX。但是如果我取消注释循环内部的两行,那么它工作正常(打印2)。我不能把这两个宏组合起来?不知道是否需要进一步的细节...很自我解释。C++宏(min max)无法正常工作
谢谢。周围的术语
#include <iostream>
#include <limits.h>
using namespace std;
#define min(a,b) a<b?a:b
#define max(a,b) a>b?a:b
int main(int argc, char **argv)
{
int N = 100;
int *drop = new int[N+1];
drop[0] = 0; drop[1] = 1; drop[2] = 1;
for(int i=3; i<=N; i++)
{
drop[i] = INT_MAX;
for(int start=1; start<=i; start++)
{
drop[i] = min(drop[i], max(start, drop[i-start]+1));
//int x = max(start, drop[i-start]+1);
//drop[i] = min(drop[i], x);
}
}
cout<<drop[3]<<endl;
return 0;
}
使用库函数,因此您不允许使用'min(35,“frog”)'',因为您使用了宏并且宏没有类型检查,所以这是允许的。 –