I just started reading up on the C# language, and one of the first sections in my reading material is, naturally, variables and types.
In short order I came across the integral types table, which listed sbyte
, byte
, short
, ushort
, int
, uint
, long
, ulong
and char
.
The exception to the pairing here is char
, so let's disregard it and have a look at the others.
The first pair, byte
, prefixes the signed version with an "s", and leaves the unsigned version without a prefix. But for all the other pairs, the relation is reversed... the signed version is without prefix and the unsigned has a "u" prefix.
Is there a reason for this that I should be aware of, or is this just a design quirk?
Link for reference: http://msdn.microsoft.com/en-us/library/exx3b86w.aspx
Bytes are conventionally treated as a pattern of bits rather than a normal number, and the "standard" values for a byte are 0 to 255. The signed version of byte is the abnormal case, with values treated as -128 to 127.
For all other numeric types the "standard" values are signed, as this tallies with our day-to-day intuitions about numbers (ie, that they can be negative as well as positive). For numeric types, the unsigned versions are the abnormal case.
(I don't think that I've ever used sbyte
in any real-world code, and I use int
, long
etc much more often than I use their unsigned counterparts.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With