0

変数およびは常に 0 より大きく、0 ~T255の値を格納するベクトルです。可能であれば、理由を説明してください。ここでは CodeBlocks で問題なく動作しているように見えますが、私には意味がありません。なぜなら、それらは異なるタイプのものだからです: 1 つはで、もう 1 つはです。max_grayqtd_pxnumeros_pxunsigned charunsigned charint

void filtro(unsigned char *numeros_px, int qtd_px, int T, int max_gray){
    int i;
    for(i=0; i<qtd_px; i++){
        if(numeros_px[i]>= T) numeros_px[i]=max_gray;
        else numeros_px[i]=0;
    }
}
4

1 に答える 1

1

はい、char は 8 ビット幅、整数は 32 であるため、char を int に割り当てることができます (アーキテクチャによって異なりますが、PC と 32 ビット ARM では 32 ビット幅です。一部のチップでは 16 ビットです)。

明らかにデータを失う可能性があるため、できないことは反対です。*あなたのコードでは、これは悪いことです: * numeros_px[i]=max_gray;そのままmax_grey32 ビットで、それを 8 ビット変数に入れます。max_grey<255の場合、これは問題ではありません

于 2013-09-04T20:26:01.713 に答える