首頁 > 後端開發 > C++ > 主體

為什麼在 C 模板中 char 被視為與有符號字元和無符號字元不同的類型?

DDD
發布: 2024-10-29 06:04:31
原創
910 人瀏覽過

Why is char considered a distinct type from signed char and unsigned char in C   Templates?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板