Правильные варианты:
short int *smoothedim;
unsigned char **edge;
int rows, int cols;
int i;
for(i = 0;i< rows*cols;i++){
(*edge)[i] = (255*smoothedim[i]/255);
}
for(i = 0;i< rows*cols;i++){
(*edge)[i] = (smoothedim[i]/1);
}
Не правильный варианты (с точки зрения компилятора)
for(i = 0;i< rows*cols;i++){
(*edge)[i] = (smoothedim[i]/255*255);
}
for(i = 0;i< rows*cols;i++){
(*edge)[i] = (smoothedim[i]/255*255);
}
Причем, второй вариант не трактуется как (*edge)[i] = (smoothedim[i]/(255*255));
Разница между "правильным" и "неправильным" заключается в массиве edge. В случае неправильного варианта, данные дублируются со смещением, и, вообще, чего-то страшное.
Испытано на VC6, VC6+SP5, VC7.
Я просто в шоке...