char!=(signed char), char!=(unsigned char)
這個問題探討了char 資料類型的行為C 與int 等其他整數類型相比。具體來說,它解決了以下問題:char 被視為與有符號 char 和無符號 char 不同的類型。
C 標準將 char、signed char 和 unsigned char 定義為三種不同的類型。雖然它們共享相同數量的儲存和對齊要求,但它們的值表示和位元模式是不同的。對於無符號字元類型,所有位元模式都表示數字。但是,對於 char 或signed char 來說不一定如此。
問題中的範例程式碼示範了這種行為差異。當為 int8(有符號字元)、uint8(無符號字元)和 char 建立模板專門化時,會產生三個單獨的實例化。這是因為編譯器將 char 視為與其他兩種不同的類型。
相反,當為 int、int32 和 uint32 建立範本特化時,只會為 int 和 int32 產生一個實例化,因為它們被視為相同型別。然而,Signed int 被視為單獨的類型並產生自己的模板特化。
此行為與 C 標準一致,其中規定 char、signed char 和 unsigned char 是三種不同的類型。因此,在模板專業化中將它們視為不同的類型是正確的。
以上是為什麼在 C 模板中 char 被視為與有符號字元和無符號字元不同的類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!