C 隱式和顯示型別轉換

2022-02-07 18:24:06 字數 1768 閱讀 6519

c# 是在編譯時靜態型別化的,因此變數在宣告後就無法再次宣告,或者無法用於儲存其他型別的值,除非該型別可以轉換為變數的型別。

1. 隱式型別轉換

隱式轉換,就是系統預設的轉換,其本質是小儲存容量資料型別自動轉換為大儲存容量資料型別,該轉換是一種安全型別的轉換,不會導致資料丟失,因此不需要任何特殊的語法。

下面是 .net 資料型別之間的c#隱式轉換列表:

2.顯式型別轉換

顯式型別轉換,即強制型別轉換。顯式轉換需要強制轉換運算子,而且強制轉換會造成資料丟失。

源型別

目標型別

sbyte

byte,ushort,uint,ulong,或char

byte

sbyte或char

short

sbyte,byte,ushort,uint,ulong,或char

ushort

sbyte,byte,short,或char

intsbyte,byte,short,ushort,uint,ulong,或char

uint

sbyte,byte,short,ushort,int,或char

long

sbyte,byte,short,ushort,int,uint,ulong,或char

ulong

sbyte,byte,short,ushort,int,uint,long,或char

float

sbyte,byte,short,ushort,int,uint,long,ulong,char,或decimal

double

sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或decimal

decimal

sbyte,byte,short,ushort,int,uint,long,ulong,char,float,或double

char

sbyte,byte,或short

顯示型別裝換的方法:

1.前置型別轉換,例如:

double dbtotal = 12345678910.456

;int i = (int)dbtotal;//

此處運用了強制轉換

2.型別解析轉換,如int.parse(),int32.parse()等採用方法來轉換.

string str = "

100"

;int i = int.parse(str);

注意:str除掉引號的型別必須和*.parse的型別一致。如果將100改成100.78,即變成float型別,執行時將會報錯"輸入字串的格式不正確."

3.採用字尾式轉換,如k.tostring(),一般運用於字串或日期等其它型別

int i = 100

;string s = i.tostring();

4.採用convert類來實現轉換,該類基本支援所有型別之間的轉換

string str = "

100"

;inti = convert.toint32(str);

注意:str除掉引號的型別必須和convert.*的型別一致。如果將100改成100.78,即變成float型別,執行時將會報錯"輸入字串的格式不正確."

C 中隱式型別轉換和顯示型別轉換

c 支援隱式型別轉換,但前提是不損失資料精度。而c和c 不同的是,即使損失精度也會自動轉換。如 int x double y y 2.7 x y 假使賦值操作真被執行,那麼y值的小數部分將被擷取,x取得值2。這樣就發生了精度損失,或稱窄化轉換。c或c 編譯器允許這樣的賦值,不出一聲就把值給截短 然而...

C 的隱式和顯示型別轉換

關於隱式轉換和顯示轉換,每種語言都有的,c 中當然也不例外。一般常用到的場合,一種是寫運算表示式的時候,要保持整體的資料型別一致和計算準確,比如有乙個變數a是int型,但是它是通過加減乘除得到的,那麼在運算中就要考慮用顯示轉換,除的運算需要轉換成float或double,再把結果強制轉換為int 再...

C 的隱式和顯示型別轉換

關於隱式轉換和顯示轉換,每種語言都有的,c 中當然也不例外。一般常用到的場合,一種是寫運算表示式的時候,要保持整體的資料型別一致和計算準確,比如有乙個變數a是int型,但是它是通過加減乘除得到的,那麼在運算中就要考慮用顯示轉換,除的運算需要轉換成float或double,再把結果強制轉換為int 再...