C重溫系列(2) 隱式型別轉換

2021-09-11 18:20:37 字數 730 閱讀 3180

隱式轉換通常發生在以下這幾種情況:

1、在乙個運算表示式中存在多種型別的混合運算 

int inum    = 2;

char cstr = 10;

double dnum = 3.14;

//在inum+cstr+dnum運算前,inum,cstr的值被提公升為double型別

printf("%lf",inum+cstr+dnum);

2、呼叫乙個函式的時候,傳遞的引數或者返回變數的型別與原函式不匹配

double add_sub(int inum,char cstr)

return inum+cstr;

}//不難想象,下面的輸出大小為:4

void test(void)

3、當表示式中存在有符號型別和無符號型別的時候,所有的運算元都自動轉換為無符號型別

#include int main()

輸出結果:

因為負數是以補碼形式儲存的,(為了方便分析,前面位的0/1位暫時省略)20的原碼10100,反碼為01011,補碼(反碼加1)為01100,所以-20的十六進製制儲存即為 ffff ffex。

C 隱式型別轉換

c 定義了一組內建型別物件之間的轉換標準,在必要時它們被編譯器隱式的應用到物件上。發生隱式型別轉換的情景 1,在混合型別的算術表示式中 轉換原則 轉換為最寬的資料型別。也可叫,算術轉換。int ival 5 double dval 3.14 ival 被提公升為double型別 ival dval ...

C 隱式型別轉換

眾所周知,c 的基本型別中並非完全的對立,部分資料型別之間是可以進行隱式轉換的。所謂隱式轉換,是指不需要使用者干預,編譯器私下進行的型別轉換行為。很多時候使用者可能都不知道進行了哪些轉換。c 物件導向的多型特性,就是通過父類的型別實現對子類的封裝。通過隱式轉換,你可以直接將乙個子類的物件使用父類的型...

C 隱式型別轉換

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