C#整数类型不一致

时间:2009-08-28 12:08:13

标签: c# integral

我刚刚开始阅读C#语言,我的阅读材料的第一部分之一就是变量和类型。

我在短时间内遇到了整数类型表,其中列出了 sbyte byte short ushort int uint {{1 } long ulong 。 这里配对的例外是 char ,所以让我们忽略它并看看其他的。

第一对 char ,在签名版本前加上“s”,并保留没有前缀的无符号版本。但对于所有其他对,关系是相反的...签名版本没有前缀,unsigned有一个“u”前缀。

我有没有理由知道这一点,或者这只是一个设计怪癖?

参考链接:http://msdn.microsoft.com/en-us/library/exx3b86w.aspx

2 个答案:

答案 0 :(得分:13)

字节通常被视为位模式而不是正常数字,并且字节的“标准”值为0到255.字节的签名版本是异常情况,值被视为-128到127

对于所有其他数字类型,“标准”值都是有符号的,因为这符合我们对数字的日常直觉(即它们既可以是负数也可以是正数)。对于数字类型,无符号版本是异常情况。

(我不认为我在任何实际代码中使用sbyte,而且我使用intlong等等比我使用未签名的同行更常见。)

答案 1 :(得分:4)

我猜测byte可能更常用作无符号类型而不是签名类型