C語言實現寬資料型別與窄資料型別之間的轉換

2021-08-20 04:11:50 字數 1060 閱讀 1246



寬資料型別和窄資料型別之間的轉換

首先,從一張圖看看各個資料型別之間的大小,從上往下依次是資料型別從寬往窄。

1、將窄的資料型別轉換為寬的資料型別

窄的資料型別預設轉寬的資料型別

同型別的資料無符號比有符號寬

例如:int 和unsigned int比較,unsigned int的資料型別寬

上面程式中,a和-1進行比較就是unsigned int 型和int型進行比較,無符號的unsigned int 型比int型資料型別寬,所以把int型-1轉換成unsigned int 型,2的32次方應該是個很大很大的數,總之比10要大,所以輸出a

b和-1進行比較是unsigned short 型和int型進行比較,都化為int型就是10和-1比較,輸出b>-1;

整型起,低於整型位元組的資料型別至少變為整型

窄的資料型別變寬的資料型別補符號位(有符號則左邊補符號位,無符號則右邊補0,類似右移)

2、寬資料型別轉換為窄資料型別,保留低資料

上面程式是把int型的寬資料型別強制轉換為short型的窄資料型別

int型的是4個位元組,它轉換成char型的1個位元組,就丟棄了最左邊的1,保留低位資料,所以int型的300轉換成char型的就為44了。

C語言實現抽象資料型別(ADT

c c 有固有資料型別,比如int,float,double。int a 就宣告且定義出乙個int型變數 或者叫資料物件 但光有這些固有的資料型別不能滿足程式設計的可讀 可復用 可維護性的要求。比如想要處理乙個現實中 學生小明 的物件,如果能有乙個名叫 student 的 學生 型別 好比 int ...

OCI資料型別與C語言資料型別問題

通過oci函式執行資料庫sql,提取值到記憶體中進行處理,執行sql如下 select out bytes 1024 from bf discharge info t 使用函式ocidefinebypos進行繫結時,oci型別使用的sqlt int,導致資料被取整,應該使用sqlt flt。oci資...

C語言 資料型別

基本型別 整形 int 字元型 char 實型 浮點型 單精度 float 雙精度 double 構造型別 陣列型別,結構型別 struct 聯合型別 uion 列舉型別 enum 指標型別 空型別 無值型別 void。常量 在程式執行過程中,其值不能被改變的量稱為常量。變數 變數代表記憶體中具有特...