C++でのifの使い方
情報   C++ 削除 
注目度
1
閲覧数
1675
解決済
暇なときに
このエントリーをはてなブックマークに追加
mike0403
(0pt)
val=((((nu*mf*(pInImg[ i * ImgWidth + j ]-ml))/(sl))+ml)*slope);
               
                pOutImg[ i * ImgWidth + j ]=val;
               
                if(val>255){
                    pOutImg[ i * ImgWidth + j ]=255;
                }

                if(val<0){
                    pOutImg[ i * ImgWidth + j ]=0;
                }


と、

val=((((nu*mf*(pInImg[ i * ImgWidth + j ]-ml))/(sl))+ml)*slope);
               
                if(val>255){
                    pOutImg[ i * ImgWidth + j ]=255;
                }

                if(val<0){
                    pOutImg[ i * ImgWidth + j ]=0;
                }

                else{
                    pOutImg[ i * ImgWidth + j ]=val;
                }


は、自分では同じように感じましたが出力結果が違いました。

どこが違うのか教えてください。

2010-07-07 22:15:13
natrium
(84pt)
valが256以上の時、前者ではpOutImg[i*ImgWidth+j]が255になりますが、後者ではvalの値がそのまま代入されます。

何故なら、前者の場合、一旦
pOutImg[i*ImgWidth+j] = val;

でvalの値が代入された後
if(val > 255) {...}
でpOutImg[i*ImgWidth+j]が256以上の場合に255に修正されますが、

後者の場合
if(val > 255){...}
でpOutImg[i*ImgWidth+j]に255が代入された後

if(val < 0){
 ...
}else{
   pOutImg[i*ImgWidth+j] = val;
}

のelse以下が実行されて、もともと255が入っていたpOutImg[i*ImgWidth+j]にvalで上書きするためです。
1拍手 |
2010-07-07 22:43:57
mike0403
(0pt)
ありがとうございます。
2010-07-08 17:15:15
一言投稿 (Q&Aに関して、思ったことなどをつぶやいてみよう!)
一言投稿はまだありません

そのままでしばらくお待ちください


しばらくたっても変わらない場合はキャンセルしてください

キャンセル

以下の内容で回答を投稿します

よろしいですか?

回答内容

回答の投稿が完了しました

こちらからご確認ください