值型別的顯示 隱式轉換和算術溢位檢查

2022-03-15 09:27:52 字數 741 閱讀 8069

(顯示/隱式)轉換

編譯器能夠在基元型別之間進行隱式或顯示轉換

int32 i =5

;int64 l 

=i;    

//從int32到int64的隱式轉換

如果兩個型別之間的轉換是"安全"的(安全是指轉換不會造成資料丟失),那麼c#允許在他們之間進行隱式轉換

如果轉換存在潛在的"安全"(轉換會引起丟失精度或數量級),c#要求進行顯示轉換,如

single s 

=5.55

;int32 i1 

=(int32) s; 

//從single到int32的顯式轉換

checked 與 unchecked 基元型別操作

byte b 

=100;b 

=(byte) (b 

+200

);    

//運算溢位,結果為44

預設情況下clr不檢查溢位,可以通過增加/checked+編譯器命令開關或checked{}語句開啟溢位檢查,當檢查到有溢位時會丟擲

overflowexceptionb =

checked

((byte) (b 

+200

));    

//丟擲 overflowexception

下面**具有同樣功能:

checked

* system.decimal是乙個特殊的型別, checked 和 unchecked對他不起作用

C 隱式和顯示型別轉換

c 是在編譯時靜態型別化的,因此變數在宣告後就無法再次宣告,或者無法用於儲存其他型別的值,除非該型別可以轉換為變數的型別。1.隱式型別轉換 隱式轉換,就是系統預設的轉換,其本質是小儲存容量資料型別自動轉換為大儲存容量資料型別,該轉換是一種安全型別的轉換,不會導致資料丟失,因此不需要任何特殊的語法。下...

C 的隱式和顯示型別轉換

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

C 的隱式和顯示型別轉換

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