すみません質問です。

if文の判定部分に関数を入れて、そのまま判定を行っているのですが
unsign char型(以後UBと表記)ですべて統一しているのに、マイナスの判定になります…。
これでどうしてvalに2が代入されるのでしょうか…助けてください。
ちなみに、ifの判定をこのようにキャストして書くと上手くいきます。→ (UB)abc() > 0
スマホからなので読みにくいかもしれません。

void main(void){

UB val =0;

if(abc() > 0){

val=1;

}else{

val=2;
}

}

UB abc(void){

UB temp=0x80;

return temp;
}