char!=(signed char), char!=(unsigned char) [重複]
在某些情況下,C 會對待char,與int 及其變體不同,signed char 和unsigned char 是不同的型別。此行為源自於 C 中字元類型的性質,如 C 標準所述:
Plain char, signed char, and unsigned char are three distinct types.
雖然 int 通常與signed int 同義,但 char 與signed char 或unsigned char 沒有相同的關係。這意味著這些類型的模板專業化將單獨實例化。
在提供的程式碼中,創建了三個模板專業化:
但是,對於int及其變體,僅建立一個模板特化,因為除非明確指定為有符號或無符號,否則它們都被視為相同類型。
因此,在給定的範例中,輸出會顯示三個不同的值isX::ikIsX 是 int8、uint8 和 char 的型別別名,而 int32、uint32 和 int 只會顯示一個值。
在使用模板元程式設計和類型自省時,理解這一區別至關重要。 C .
以上是為什麼 `char`、`signed char` 和 `unsigned char` 的行為與 C 模板特化中的 `int` 及其變體不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!