C#中byte類型運算


 首先看下面一段代碼

byte x = 1;
byte y = 2;
byte z = x + y; 
Console.WriteLine(z);

可能很多人會說顯示結果是3。

其實,這段代碼無法運行,因為編譯就不通過報錯,錯誤原因:錯誤 1 無法將類型“int”隱式轉換為“byte”。存在一個顯式轉換(是否缺少強制轉換?) 

因為,byte類型之間運算會隱式轉換成int類型,然后對int類型值進行運算,得到的結果是int類型,所以直接用byte類型變量保存結果會報錯。實際上short和char類型相互運算操作也做這樣的處理。之所這樣設計,可能byte、short和char類型相互運算操作,數值可能會發生溢出錯誤,所以在運算的時候直接都轉換為int來運算,達到強制結果用int類型保存。

如果認為運算后結果不會溢出的情況,可以顯式保存結果

byte x = 1;
byte y = 2;
byte z = (byte)(x + y);
Console.WriteLine(z);

  

再看下面這段代碼

byte z = 1 + 2;
Console.WriteLine(z);

在vs上編譯和運行沒問題的,結果是3。

1+2是常量運算,得到的就是3,然后賦值給z。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM