首先看下面一段**
1
2
3
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型別儲存。
如果認為運算後結果不會溢位的情況,可以顯式儲存結果
1
2
3
4
byte
x = 1;
byte
y = 2;
byte
z = (
byte
)(x + y);
console.writeline(z);
再看下面這段**:
1
2
byte
z = 1 + 2;
console.writeline(z);
在vs上編譯和執行沒問題的,結果是3。
1+2是常量運算,得到的就是3,然後賦值給z。
再看下面**:
byte b = 127;
byte a = 2;
b =(byte)(b + a);
console.writeline(b);
console.readline();
在vs上編譯和執行沒問題的,結果是129。
127+2是常量運算,得到的就是129,然後賦值給b。
再看下面這段**:
byte b = 255;
byte a = 2;
b =(byte)(b + a);
console.writeline(b);
console.readline();
在vs上編譯和執行沒問題的,結果是1。
byte的取值範圍是0~255所以超過就會重頭開始算
C 中的Byte型別
1.在儲存影象的時候會用到 byte陣列來儲存,屬於二進位制檔案,儲存二進位制檔案一般都用byte資料,比如你動態生成驗證碼的時候,都是把影象存入byte陣列裡的。2.byte 型別 變數儲存的值不能超過255 對應的資料庫型別是 tinyint,可以用來區別256個數字,取值範圍是0 255.3....
int型別轉換byte型別
計算機中,int型別占用4個位元組,byte型別占用1個位元組 當int型別強轉為byte型別時,計算機會擷取最後的八位 1個位元組 由於計算機儲存資料時,都是以補碼的形式進行儲存。然而,我們通常看到的數卻是計算機儲存的補碼先轉換成反碼,後轉換成原碼,再轉換成十進位制呈現的。正數 原碼 反碼 補碼 ...
vb中single型別轉換成byte 型別的方法
平常在嵌入式的開發中,用的是keil,所以基本用的是c語言。在pc端現在用的比較多是vb.net。但是在資料通訊的時候,c與vb的資料型別還是有比較大的差別。在pc端會用到將single型別的資料通過串列埠傳送給下位機的問題。這時候就需要將single型別的資料轉換成4個位元組的byte型別。研究了...