Home [C# 筆記] byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '好'; byte g = 256; 這些變數錯在哪?
Post
Cancel

[C# 筆記] byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '好'; byte g = 256; 這些變數錯在哪?

byte b = ‘a’;

1
2
byte b = 'a';//編譯錯誤
byte b = (byte)'a'; //97, a的ascii碼的值為97

這行程式碼會引發編譯錯誤。雖然字元'a'可以隱式地轉換為整數,但是將其賦值給byte類型時,需要確保其值在byte類型的範圍內(0255)。字元'a'ASCII碼值為97,這是一個在byte範圍內的值,所以可以修改為 byte b = (byte)'a'; 來解決問題。

byte c = 1;

1
byte c = 1; //1

這是合法的,因為 1byte 範圍內(0255)。

byte d = ‘ab’;

這是不合法的。因為 'ab' 是一個字串,不能直接賦值給一個 byte 變數。

byte e = ‘好’;

這是不合法的。’好’ 是一個中文字元,它的 Unicode 編碼超出了 byte 的範圍。

byte g = 256;

1
byte g = 256; //錯誤。超出byte的範圍。0-255

這是不合法的。因為 256 超出了 byte 的範圍。byte 的範圍是 0255
因此不能將 256 賦值給 byte 型別。需要將值修改為在 byte 範圍內的值。

1
2
byte g = 255 + 1; //錯誤。256超出byte的範圍。0-255
byte g = 254 + 1; //255。在 byte 範圍內

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

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

[C# 筆記] 字串中 null、""、string.Empty 的區別

[C# 筆記] string 和 StringBuilder 的區別,兩者表現的比較