When casting between signed and unsigned integers of the same data size, the bit representation doesn’t change but the interpretation of the bits change.

Positive integers have the same bit representation regardless if they are signed or unsigned, but of course the interpretation is different.

For arithmetic operation:

If one of the operands is long double, then the other is converted to long double

Else if one of the operands is double, then the other is converted to double

Else if one of the operands is float, then the other is converted to float

Else if one of the operands is long int, then the other is converted to long int

Else if one of the operands is int, then the other is converted to int