All types that are smaller than int are promoted to int when they are used in an expression.
In your code alpha is treated as an int and that's why you not get 0.
The rules for types larger than int is a bit different. If you mix two unsigned and signed types of the same size the signed value will be treated a unsigned so 120u / a is actually the same as 120u / (unsigned) a.
For types of different size I think the smaller type is just converted to the larger type.