C 中的型別轉換,以及與C的區別

2021-06-28 17:05:49 字數 1004 閱讀 2761

程式設計的時候,型別轉換在某些緊要的關頭是必需品。

c風格的型別轉換,相對c++風格的型別轉換來說,比較粗魯,c風格的型別轉換,能允許任何型別之間進行轉換,在編寫c++程式時是也可以使用的,要進行精確的型別轉換時,這是乙個優點。但是,正是這樣的優點,使c風格的型別轉換,在編寫程式時,容易出現型別不明,轉換失誤,並且在程式語句中難以識別,可讀性較差,在編寫c++程式時,建議使用c++中的型別轉換。

c++中的型別轉換操作符有四個,分別是:static_cast,const_cast,dynamic_cast,reinterpret_cast

c的型別轉換使用格式為:(type)expression

c++的型別轉換格式為:static_cast(expression)

static_cast:此操作符的功能上基本與c風格的型別轉換一樣強大,含義也相同,但是功能上有一定的限制:

比如:1.不能吧struct轉換層int,或者,double轉換成指標型別等

2.不能去除const屬性,需要用另乙個型別轉換操作符const_cast

const_cast:用於型別轉換掉表示式const或者volatile屬性,其他型別的轉換操作,在執行語句時,將被拒絕

其最普遍的用途就是轉換掉const屬性

dynamic_cast:被用於安全的沿著類的繼承關係下進行的型別轉換

可以用過返回值判斷其型別轉換是否成功:

1.當對指標型別操作時,返回空指標表示失敗

2.當對應用物件進行型別轉換時,將丟擲異常表示失敗

要注意的點是:

1.該型別轉換無法轉換const修飾的型別

2.不能用於缺乏虛函式的型別上

ps:沒有繼承關係的建議使用static_cast進行轉換,若有const修飾的,建議用const_cast進行轉換

reinterpret_cast:轉換結果幾乎都是執行期定義,因此,使用該型別操作符進行轉換的**將降低可移植性

該型別轉換操作符常用與函式指標型別之間進行轉換

ps:轉換函式指標的**是補課移植的

C 中的型別轉換

和goto語句一樣型別轉換的名聲似乎也是不那麼好。不過型別轉換在某些緊要關頭就顯得尤為重要,看看現有的c c 就知道,以至於你不理解轉換的作用,將是無法閱讀的。就像鈾,它能變成原子彈,但它也能用來發電,是災難還是福祉那就要看人類了。顯然型別轉換默默承受著這不公的一切。不管怎麼說c風格的型別轉換還是不...

C 中的型別轉換

1.隱式轉換 1 賦值轉換 將右值轉換為左型別,然後再賦值。2 整型提公升 c 將bool char,unsigned char,singned char,short轉換為int,int計算最快 表示式中的優先順序轉換 long double double float unsigned long 對...

C 中的型別轉換

我們知道 變數的型別定義了物件能包含的資料和參與的運算。其中一種運算被大多數型別支援,就是將變數從某一種給定的型別轉化為另外的型別。在了解型別轉換種類之前,首先牢記 型別轉換只是暫時的,原來的變數型別並不改變。在c語言中,分為兩種型別轉換 1,隱式型別轉換 2,顯示型別轉換 例如 double d ...