爲什麼下面的代碼不工作?它打印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」)'',因爲您使用了宏並且宏沒有類型檢查,所以這是允許的。 –