标签:
#define min(a,b) ((a) < (b) ? (a) : (b))
在复杂调用的情况下,它的行为是不可预期的,这是因为它的两个参数值都被计算两次. 一次是在a 和b 的测试中另一次是在宏的返回值被计算期间.
#include <iostream> #define min(a,b) ((a) < (b) ? (a) : (b)) const int size = 10; int ia[size]; int main() { int elem_cnt = 0; int *p = &ia[0]; // 计数数组元素的个数 while ( min(p++,&ia[size]) != &ia[size] )
{
++elem_cnt;
cout << "elem_cnt : " << elem_cnt
<< "\texpecting: " << size << endl;
return 0;
}
输出结果 elem_cnt : 5 expecting: 10
标签:
原文地址:http://blog.csdn.net/lightupheaven/article/details/43730689