【问题标题】:C# integral types inconsistencyC# 整数类型不一致
【发布时间】:2009-08-28 12:08:13
【问题描述】:

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

我很快遇到了整数类型表,其中列出了 sbytebyteshortushortintuintlongulongchar。 这里的配对例外是char,所以我们先不管它,看看其他的。

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

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

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

【问题讨论】:

  • 仅供参考,在 1990 年代后期,在框架的初始设计期间,这是一个激烈争论的问题。

标签: c# integral


【解决方案1】:

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

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

(我认为我曾经在任何实际代码中使用过sbyte,而且我使用intlong 等的频率比使用它们的频率高得多未签名的同行。)

【讨论】:

  • 我想听起来合乎逻辑。 :) 谢谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2015-06-27
    • 2012-08-19
    • 2012-11-18
    相关资源
    最近更新 更多