C 中byte型別運算

2021-08-08 22:17:30 字數 1487 閱讀 7358

首先看下面一段**

1

2

3

bytex = 1;

bytey = 2;

bytez = 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

bytex = 1;

bytey = 2;

bytez = (byte)(x + y);

console.writeline(z);

再看下面這段**:

1

2

bytez = 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型別。研究了...