類型轉換
在 C 語言程序中,經常需要對不同類型的數據進行運算,為了解決數據類型不一緻的問題,需要對數據的類型進行轉換。例如一個浮點數和一個整數相加,必須先将兩個數轉換成同一類型。C 語言程序中的類型轉換可分為隐式和強制類型轉換兩種。
隐式類型轉換
所謂隐式類型轉換指的是,系統自動将取值範圍小的數據類型轉換為數據取值範圍大的數據類型,它是由系統自動轉換完成的。例如,将 int 類型和 double類型的數據相加,系統會将 int類型的數據轉換為 double 類型的數據,再進行相加操作,具體示例如下:
int num1=12;
double num2=10.5;
num1 num2;
上述講解的兩種類型轉換,看起來簡單,但在使用時需要注意以下幾個細節:
(1)浮點型與整型
将浮點數(單雙精度)轉換為整數時,将舍棄浮點數的小數部分,隻保留整數部分。将整型值賦給浮點型變量,數值不變,隻将形式改為浮點形式,即小數點後帶若幹個 0 。需要注意的是,賦值時的類型轉換實際上是強制的。
(2)單、雙精度浮點型
由于 C 語言中的浮點值總是用雙精度表示的,所以 float 型數據參與運算時隻需要在尾部加 0 延長為 double 型數據。double 型數據轉換為 float 型時,會造成數據精度丢失,有效位以外的數據将會進行四舍五入。
(3)char型與 int型
将 int 型數值賦給 char 型變量時,隻保留其最低 8 位,高位部分舍棄。将char 型數值賦給 int 型變量時, 一些編譯程序不管其值大小都作正數處理,而另一些編譯程序在轉換時會根據 char 型數據值的大小進行判斷,若值大于127,就作為負數處理。對于使用者來講,如果原來 char 型數據取正值,轉換後仍為正值。如果原來 char 型值可正可負,則轉換後也仍然保持原值,隻是數據的内部表示形式有所不同。
(4)int型與 long型
long 型數據賦給 int 型變量時,将低 16 位值送給 int 型變量,而将高 16 位截斷舍棄。(這裡假定 int型占兩個字節)。 将 int型數據送給 long型變量時,其外部值保持不變,而内部形式有所改變。
(5)無符号整數
将一個unsigned型數據賦給一個長度相同的整型變量時(如:unsigned→int、unsigned long→long, unsigned short→short) ,内部的存儲方式不變,但外部值卻可能改變。将一個非 unsigned整型數據賦給一個長度相同的 unsigned 型變量時, 内部存儲形式不變,但外部表示時總是無符号的。
求關注,求轉發,求支持!
想要學習的童鞋可以加群:564950050!
同時關注我們的【輕松學C語言】
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!