(1)问题描述:咱们在写程序的时候,希望程序能够按照自己的想法顺利执行下去。但是有时候却出现根本不执行的情况。如以下程序显示
for(int j=0 ; j<=bmpWidth-1 ;j++)
{
<span style="white-space:pre"> </span>for(int k=0 ; k<3; k++) //控制rgb的变化
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if(k=0)
<span style="white-space:pre"> </span> r1=*(pBmpBuf+i*lineByte+j*3+k);
<span style="white-space:pre"> </span>else if(k=1)
<span style="white-space:pre"> </span> g1=*(pBmpBuf+i*lineByte+j*3+k);
<span style="white-space:pre"> </span>else
<span style="white-space:pre"> </span> b1=*(pBmpBuf+i*lineByte+j*3+k);
<span style="white-space:pre"> </span>}
}
/*以下六句均不执行*/</span>
y1=(int)(0.2568*r1+0.5041*g1-0.0979*b1+16);
arrayB[count++]=y1;
cb1=(int)(-0.1482*r1-0.2910*g1+0.4392*b1+128);
arrayB[count++]=cb1;
cr1=(int)(0.4392*r1-0.3678*g1-0.0714*b1+128);arrayB[count++]=cr1;<<y1<<setw(5)<<cb1<<setw(5)<<cr1<<" ";
(2)问题分析:后来发现,第二个否循环中的if语句应该是等于,而不应该是赋值语句。
(3)解决方案:
if(k=0) r1=*(pBmpBuf+i*lineByte+j*3+k);
else if(k=1) g1=*(pBmpBuf+i*lineByte+j*3+k);
else b1=*(pBmpBuf+i*lineByte+j*3+k);
(4)总结,写程序一定要细心,不能犯这种错误。因为找错误的过程是艰辛而又痛苦的。