天天看點

c++程式執行時候,有的語句根本不執行的原因

(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)總結,寫程式一定要細心,不能犯這種錯誤。因為找錯誤的過程是艱辛而又痛苦的。