【C语言进阶深度学习记录】四 C语言中的类型转换
生活随笔
收集整理的這篇文章主要介紹了
【C语言进阶深度学习记录】四 C语言中的类型转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天學習C語言中的類型轉換,包括隱式類型轉換和顯示類型轉換
文章目錄
- 1 C語言中的數據類型轉換
- 1.1 強制類型轉換
- 1.11 強制類型轉換代碼分析
- 1.2 隱式類型轉換
- 1.21 隱式類型轉換代碼分析
- 2 總結
1 C語言中的數據類型轉換
C語言中,可以進行數據類型轉換。有以下兩種數據類型轉換:
- 強制類型數據轉換
- 隱式類型數據轉換
如下圖:
1.1 強制類型轉換
強制類型轉換的語法為:
- (Type)var_name; //對某一個變量名進行強制轉換
- (Type)value; // 對某一個值進行強制轉換
強制類型轉換的結果為:
- 目標類型能夠容納目標值:結果不變
- 目標類型不能容納目標值:結果將產生截斷
對于上面的轉換結果,應該大多數人能夠明白,因為目標類型如果占用的內存較小,那么就只能將被轉換的目標值的一部分數據保存起來,導致數據不完整。
注意:不是所有的強制類型轉換都能成功。當不能進行強制類型轉換的時候,編譯器將產生錯誤信息。
1.11 強制類型轉換代碼分析
如下代碼:
- 4-1.c
- 編譯運行結果為:
- 上面的結果,c=22,是因為數據截斷,c只有一個字節,s占有兩個字節,將s的值強制轉換成char給c,只能保留低字節的一字節。所以c=22
- 上述代碼都是進行強制類型轉換,但是第22和24行,是編譯期錯誤,這是因為不能將TS結構體類型強制轉換為long,以及不能講long類型強制轉換為TS結構體類型。
- 所以,強制類型轉換,不一定都能成功
1.2 隱式類型轉換
隱式類型轉換是編譯器主動進行的轉換,不需要手動強制轉換。如下圖所示:
注意:
- 低類型到高類型的隱式類型轉換是安全的,不會產生截斷
- 高類型到低類型的隱式類型轉換是不安全的,會產生數據截斷,導致結果不正常
如下圖的隱式類型轉換方向,是安全的轉換方向:
我們知道強制類型轉換,它有特定的表達形式。那么,隱式類型轉換,一般發生在哪些地方呢?
隱式類型轉換的發生點:
- 算數運算中,低類型轉換為高類型
- 賦值表達式中,表達式的值轉換為左邊變量的類型
- 函數調用時,實參轉換為形參的類型
- 函數返回時,return表達式轉換為返回類型
1.21 隱式類型轉換代碼分析
看如下代碼:
- 4-2.c
- 編譯運行結果為:
上面的代碼,還是比較簡單的,印證了上面的四條隱式類型轉換發生的時間點。這里不再贅述
2 總結
- 強制類型轉換由程序員來完成
- 隱式類型轉換由編譯器自動完成
標準C編譯器的類型檢查是比較寬松的,因此,隱式類型轉換可能帶來意外的錯誤
總結
以上是生活随笔為你收集整理的【C语言进阶深度学习记录】四 C语言中的类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音乐url的拼接
- 下一篇: 梳理百年深度学习发展史-七月在线机器学习