1

C# 5.0 in a Nutshell中的 C# 主题的转换(第 2 章)中,作者说:

...转换可以是隐式的或显式的:隐式转换会自动发生,而显式转换需要强制转换。在下面的示例中,我们将int隐式转换为long类型(其按位容量是int的两倍)...

这是一个例子:

int x = 12345;      // int is a 32-bit integer
long y = x;         // Implicit conversion to 64-bit integer
short z = (short)x; // Explicit conversion to 16-bit integer

位容量和位容量之间有关系吗?或者,作者对按位容量的看法是什么?

4

3 回答 3

2

我认为,他想区分“按位容量”和“数值容量”。

在该示例中,数据类型的按位容量不同:int 有 32、long 64 和 short 16。在这种情况下,转换为具有较高容量的数据类型是隐式发生的,而转换为具有较低位容量的数据类型是显式的。

另一方面,有类似“数字容量”的东西,其中 int 和 uint 共享相同数量的位(它们具有相同的“按位容量”),但在您可以存储的值方面仍然不完全兼容(uint 有不支持负值)。

于 2013-07-03T05:09:30.517 回答
1

我认为它们的意思是“容量,相对于比特”。如果他们省略了“按位”部分,那么它很容易被解释为“这种类型拥有的值是另一种类型的两倍”,这是错误的:它拥有的值数量远远多于两倍。它拥有两倍的位数,从而以指数方式增加值的数量。

于 2013-07-03T05:07:35.963 回答
1

这是同样的事情。这只是意味着您有两倍的位数来表示您的值,这意味着您可以存储更大的数字。因此,数字容量与按位容量相关联,因为位越多,数字容量就越高。

使用 64 位数据类型,您可以使用 64 位二进制数表示您的值

于 2013-07-03T05:07:32.987 回答