隱式型別轉換 C 學習

2021-08-26 01:41:32 字數 1454 閱讀 6403

有符號無符號

標準整數型別

signed char

unsigned char

short

unsigned short

intunsigned int

long

unsigned long

long long

unsigned long long

擴充套件整數型別

比如編譯器可能提供__int128

比如可能有__uint128

擴充套件整數型別(extended integer types)是編譯器實現所提供的,標準整數型別以外的整數型別。它們可以比long long要大,也可以介於兩個標準的整數型別之間。

(integer conversion rank 是這麼翻譯麼?)

long long

unsigned long long

>

long

unsigned long

>

intunsigned int

>

short

unsigned short

>

char

signed char

unsigned char

轉換(conversion)

類別(category)

級別(rank)

無需轉換

identity

exact match

左值到右值轉換

lvalue transformation

陣列到指標轉換

函式到指標轉換

限定符(qualification)轉換)

qualification adjustment

整數提公升

promotion

promotion

浮點數提公升

整數轉換

conversion

conversion

浮點數轉換

浮點數-整數轉換

指標轉換

指標到成員轉換

布林轉換

所有級別(rank)比int低的整數型別(不包括 bool、char16_t、char32_t、wchar_t),如果,如果該型別的所有可能值都能包容在int內,它們被提公升為int型,否則被提公升為unsigned int型。

char16_t、char32_t、wchar_t 被提公升為下列第乙個能包含其所有可能值的型別:int、unsigned int、long int、unsigned long int、long long int、unsigned long long int

float 被提公升為 double

usual arithmetic conversions

很多二元操作符在執行之前,將兩個運算元轉換為同一型別,該型別與表示式的值型別相同。

C 隱式型別轉換

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

C 隱式型別轉換

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

C 隱式型別轉換

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