C 數值型別的轉換

2022-08-13 14:27:11 字數 1186 閱讀 8642

介紹c#數值型別之間轉換,包括介紹testbasic() 函式等方面。

c#數值型別之間轉換

這裡所說的數值型別包括 byte, short, int, long, fload, double 等,根據這個排列順序,各種型別的值依次可以向後自動進行轉換。舉個例來說,把乙個 short 型的資料賦值給乙個 int 型的變數,short 值會自動行轉換成 int 型值,再賦給 int 型變數。如下例:

private void testbasic()  

譯順利通過,執行結果是各變數的值均為 1;當然,它們的型別分別還是 system.byte 型……system.double 型。現在我們來試試,如果把賦值的順序反過來會怎麼樣呢?在 testbasic() 函式中追加如下語句:

int g = 1;  

short h = g;  

結果編譯報錯:

g:\projects\visual c#\convert\form1.cs(118): 無法將型別「int」隱式轉換為「short」其中,form1.cs 的 118 行即 short h = g 所在行。

這個時候,如果我們堅持要進行轉換,就應該使用強制型別轉換,這在 c 語言中常有提及,就是使用「(型別名) 變數名」形式的語句來對資料進行強制轉換。如上例修改如下:

short g = 1;  

byte h = (byte) g; // 將 short 型的 g 的值強制轉換成 short 型後再賦給變數 h  

編譯通過,執行結果輸出了 h = 1,轉換成功。

但是,如果我們使用強制轉換,就不得不再考慮乙個問題:short 型的範圍是 -32768 ~ 23767,而 byte 型的範圍是 0 ~ 255,那麼,如果變數 g 的大小超過了 byte 型的範圍又會出現什麼樣的情況呢?我們不妨再一次改寫**,將值改為 265,比 255 大 10.

short g = 265; //265 = 255 + 10  

byte h = (byte) g;  

編譯沒有出錯,執行結果卻不是 h = 265,而是 h = 9。

因此,我們在進行轉換的時候,應當注意被轉換的資料不能超出目標型別的範圍。這不僅體現在多位元組資料型別(相對,如上例的 short) 轉換為少位元組型別(相對,如上例的 byte) 時,也體現在位元組數相同的有符號型別和無符號型別之間,如將 byte 的 129 轉換為 sbyte 就會溢位。

c 中數值型別的轉換

影象處理中,影象經常儲存為24位或32位rgb影象,用到的資料型別是byte。c 中的byte資料型別表示的是0 255的整數,當整型和浮點數數值轉化為byte型別數值時,遵循一定的規則。下面是一些資料轉為byte型別數值的結果 從轉換結果可以看出對於整型來講,轉為byte型時用的策略是對256取餘...

型別轉換 數值操作

一 型別轉換函式 函式 描述 int x base 將x轉 換為乙個整數 其中base表示基數 long x base 將 x轉換為乙個長整數 float x 將 x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將 物件 x 轉換為字串 repr x 將物件 x 轉...

數值型別轉換的小技巧

有乙個小技巧,int型別是不支援null值的,但是資料庫是支援null型別的,所以為了讓int支援null型別,可以加乙個問號,如下 int?num null 資料型別的轉換有顯示轉換和隱式轉換,顯示轉換是從高到底,比如從long轉換到int,格式如下 int a 1 long b 12121212...