gpt4 book ai didi

c# - C# 中的字节溢出概念

转载 作者:行者123 更新时间:2023-11-30 13:53:49 25 4
gpt4 key购买 nike

我已经开始学习 C# 并且需要清除一些关于溢出概念的混淆。正如我们所知,如果超出任何数据类型的限制,C# 只会返回 0。

例如:字节 b = 255; 如果我们将 b 的值增加 1,则 b 的值将为零。对于下面的代码,我得到的输出为 256。

 using System;
namespace HelloWorld{
class program{
static void Main(){
byte b = 255;
Console.WriteLine(b+1);
}
}
}

我得到的输出不是 0,而是 256,这超出了字节类型 b 的限制。这怎么可能?

using System;
namespace HelloWorld{
class program{
static void Main(){
byte b = 255;
b = b+1
Console.WriteLine(b);
}
}

对于上面的代码,我收到编译错误,即错误 CS0266:无法将类型 int' 隐式转换为 byte'。存在显式转换(是否缺少强制转换?)

帮助!!!!

最佳答案

关于编译错误和 256 的查询的(线索)答案在以下代码片段的输出中:

byte b = 255;
Console.WriteLine($"{b + 1}, {(b+1).GetType()}");
Console.ReadLine();

输出:

256, System.Int32 <-- not `byte`

至于包装,我认为以下片段很好地说明了这个概念。

for (int i = 250; i < 260; i++)
{
byte b = (byte)i;
Console.WriteLine($"{i} => {b,3} ({Convert.ToString(b, 2).PadLeft(8, '0')})");
}

输出:

250 => 250 (11111010)
251 => 251 (11111011)
252 => 252 (11111100)
253 => 253 (11111101)
254 => 254 (11111110)
255 => 255 (11111111)
256 => 0 (00000000)
257 => 1 (00000001)
258 => 2 (00000010)
259 => 3 (00000011)

关于c# - C# 中的字节溢出概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51587617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com