4

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

很快,我遇到了整数类型表,其中列出了sbytebyteshortushortintuintlong和。这里配对的例外是,所以让我们忽略它并看看其他的。ulongcharchar

第一对 ,byte用一个“s”作为签名版本的前缀,而未签名版本则不带前缀。但是对于所有其他对,关系是相反的……有符号版本没有前缀,无符号版本有一个“u”前缀。

是否有我应该知道的原因,或者这只是一个设计怪癖?

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

4

2 回答 2

13

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

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

(我认为我从未sbyte在任何真实世界的代码中使用过,而且我使用,intlong的次数比使用未签名的代码要多得多。)

于 2009-08-28T12:13:12.813 回答
4

我猜这byte可能更常见于用作无符号类型而不是有符号类型

于 2009-08-28T12:10:33.143 回答