Ваша проблема совершенно надуманная.
Пускай
Код
undigned long a, result;
unsigned char b;
тогда
Код
if (a>(unsigned long)b)
result=a-b;
else
result=0;
либо это же можно записать еще короче
Код
result=(a>(unsigned long)b)?(a-b):0;
Пардон! Проглядел, что вторая переменная у вас другого типа. Поправил с помощью явного приведения типов. При вычислении разности применяется неявное приведение типов.