Home [C# 筆記] byte a =255; a+=5; a 的值是多少?
Post
Cancel

[C# 筆記] byte a =255; a+=5; a 的值是多少?

在C#中,當你對byte類型的變數進行算術運算,而結果超過了byte類型能夠表示的最大值(即255)時,就會發生溢位。溢出的行為取決於它發生的上下文。

1
2
3
4
5
6
7
8
byte a = 255;
a += 5; //溢位。byte 0-255

/*
如果超過了byte的最大值,它會回到最小值。
260 % 256 = 4
因此,a最終的值將為4
*/

變數a的初始值是255,當你給它加上5時,結果是260。然而,byte類型只能表示0到255的值,因此發生了溢位。

在C#中,預設情況下,對於溢出的處理方式是在相同類型的變數上進行賦值時,會將溢出的部分進行包裝(wrap around)。這意味著如果超過了byte的最大值,它會回到最小值。因此,在你的例子中,結果是:

1
260 % 256 = 4

因此,a最終的值將為4

為了避免因為溢位而導致意外行為,你可以使用checked關鍵字來啟用溢位檢查。例如:

1
2
3
4
5
checked
{
    byte a = 255;
    a += 5; // 這會拋出 System.OverflowException 異常
}

透過使用checked,如果發生溢出,就會拋出異常,允許你在程式碼中明確處理這種情況。

C# .NET面试系列一:基础语法

This post is licensed under CC BY 4.0 by the author.

[C# 筆記] 什麼是擴展方法?

[C# 筆記] 什麼是装箱和拆箱?