printf加在不同位置导致运行出错
前辈们好,我最近遇到了个奇怪的问题。有一段代码,如下(因为代码全文较长,我选取了其中出问题的地方):
在186-187行处,我加了一个printf,全部代码编译后可以正常运行,178-179正常打印。
但是如果我把186-187行注释掉,而是在183行的地方加个printf,代码运行就出错了。
出错的时候178和179行print出来的都是0了!
166 for(i=0;i<60;i++)
167 {
168 for(j=0;j<80;j++)
169 {
170 if (lepton_image[i][j] > maxval) {
171 maxval = lepton_image[i][j];
172 }
173 if (lepton_image[i][j] < minval) {
174 minval = lepton_image[i][j];
175 }
176 }
177 }
178 printf("maxval = %u\n",maxval);
179 printf("minval = %u\n",minval);
180
181 float diff = maxval - minval;
182 float scale = 255/diff;
183 //printf(" ");
184 for(i=0;i<60;i++)
185 {
186 if(i==1)
187 printf(" ");
188 for(j=0;j<80;j++)
189 {
190 value = (lepton_image[i][j] - minval) * scale;
191 *bmp = colormap[3 * value];
192 *(bmp + 1) = colormap[3 * value + 1];
193 *(bmp + 2) = colormap[3 * value + 2];
194 bmp += 3;
195 }
196 }
197 unsigned char *ret = savejpg(bmp_head0, image_name, 80, 60);
所以感觉很奇怪,理论上187处和183处加了printf效果是一样的。
况且为啥187或183处的改动,会影响到前面代码的运行?
这个问题感觉好诡异,有没有前辈们遇到过这种问题?
谢谢!