这个函数逻辑上是不是有问题?
C/C++ code
count2 恒为0的话,这个函数岂不是失去意义?
// 函数本意应该是找出 data 中出现次数最多的值给 bg,出现第二多的值给 fg // 如 data[] = { 1, 2, 3, 4, 1, 1, 2 } --> bg = 1, fg = 2 int func_1(BYTE* data, int w, int h, BYTE* bg, BYTE* fg) { int tileType = 0; BYTE pix1 = *data, pix2 = 0; int count1 = 0, count2 = 0; BYTE end = data + w*h; for (BYTE* ptr = data; ptr < end; ptr++) { if (*ptr == pix1) { // 这里在 loop 1 时恒成立 count1++; continue; } if (count2 == 0) { // 这里成立时,表示碰到第一个不同的值(与data[0]值不同的第一个值) tileType |= 0x01; // 含有两种以上的值 pix2 = *ptr; // 这里把第一个不同的值赋于 pix2 } if (*data == pix2) { // 所以这里第一次执行时,恒不成立,count2不会变 count2++; continue; } tileType |= 0x02; break; // 接下来就 break 了,count2 恒为0 } if (count1 >= count2) { *bg = pix1; *fg = pix2; } else { *bg = pix2; *fg = pix1; } return tileType; }
count2 恒为0的话,这个函数岂不是失去意义?
作者: id27145 发布时间: 2011-06-14
逻辑是不是有问题要看需求是什么
作者: healer_kx 发布时间: 2011-06-14