Or is it always guaranteed to be positive for all possible Chars?
Each 16-bit value ranges from hexadecimal 0x0000 through 0xFFFF and is stored in a Char structure.
Char Structure - MSDN