C語言基礎隱式型別轉換與強制型別轉換示例解析

2022-09-25 03:15:10 字數 1165 閱讀 3943

目錄

資料有不同的型別,不同型別資料之間進行混合運算時必然涉及到型別的轉換問題。

轉換包括隱式型別轉換和強制型別轉換。

型別轉換的原則:占用mizfde記憶體位元組數少(值域小)的型別,向占用記憶體位元組數多(值域大)的型別轉換,以保證精度不降低。

隱式轉換也稱為自動轉換,遵循一定的規則,由編譯器自動完成。

c的整型算數運算總是至少以預設整型型別的精度來進行,為了獲得這個精度,表示式中的字元和短整形運算元在使用之前都被轉換成普通整型,這種轉換為整型提公升。

整型提公升:通用cpu是難以直接實現兩個8位元位直接相加運算。所以表示式中各種長度可能小於int長度的整型值,都必須轉換為int或者unsigned int ,然後才能送入cpu去執行運算。

**示例1:

int main()

如何整型提公升:按照變數的資料型別的符號位來提公升。

**示例2:

//負數的整型提公升

char s1 = -1;

變數s1的二進位制補碼中只有8個位元位 11111111

因為char是有符號的,所以在整型提公升的時候,高位補充符號位

即:11111111 11111111 11111111 11111111

//正數的整型提公升

char s2mizfde = 1;

變數s2的二進位制補碼中只有8個位元位 00000001

因為char是有符號的,所以在整型提公升的時候,高位補充符號位

即:00000000 00000000 00000000 00000001

無符號數的整型提公升,高位直接補0;

**示例3:

隱式轉換

int main()

s1=2

s2=2.500000

請按任意鍵繼續. . .

強制型別轉換指的是使用強制型別轉換運算子,將乙個變數或表示式轉化成所需的型別

**示例1:

#include

mizfdeint main()

{ float x = 0;

int i = 0;

x = 3.6f;

i = x; //x為實型, i為整型,直接賦值會有警告

i = (int)x; //使用強制型別轉換

printf("x=%f, i=%d\n", x, i);

return 0;

C強制型別轉換與隱式轉換

如果乙個運算子兩邊的運算數型別不同,先要將其轉換為相同的型別,即較低型別轉換為較高型別,然後再參加運算,轉換規則如下圖所示 圖中橫向箭頭表示必須的轉換,如兩個float型數參加運算,雖然它們型別相同,但仍要先轉成double型再進行運算,結果亦為double型。縱向箭頭表示當運算子兩邊的運算數為不同...

C 類型別隱式轉換

隱式類型別轉換 可以用單個實參來呼叫的建構函式定義了從形參型別到該型別的乙個隱式轉換。c primer 首先要單個實參,你可以把建構函式colour的預設實參去掉,也就是定義乙個物件必須要兩個引數的時候,檔案編譯不能通過。以上只是將內建型別轉換為自定義型別 過載double,int 將使用者自定義資...

C 隱式類型別轉換

c primer 中提到 可以用 單個形參來呼叫 的建構函式定義了從 形參型別 到 該類型別 的乙個隱式轉換。這裡應該注意的是,可以用單個形參進行呼叫 並不是指建構函式只能有乙個形參,而是它可以有多個形參,但那些形參都是有預設實參的。那麼,什麼是 隱式轉換 呢?上面這句話也說了,是從 建構函式形參型...