level 6
lbj2004032
楼主
#include <iostream>
using namespace std;
#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
说是因为应用在指针实参p 上的后置递增操作随每次扩展而被应用了两次;
但是我没看懂
希望高手帮忙解答一下,THANKYOU
2010年07月19日 09点07分
1
using namespace std;
#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
说是因为应用在指针实参p 上的后置递增操作随每次扩展而被应用了两次;
但是我没看懂
希望高手帮忙解答一下,THANKYOU