在C 程式設計中,char、signed char 和unsigned char 被視為不同的資料類型。這種行為與整數不同,其中 int 和signed int 是相同的類型,而 unsigned int 是另一種單獨的類型。
問題:
為什麼下面的程式碼對 char 類型的編譯與對 int 類型的編譯不同?
cout << getIsTrue< isX<int8>::ikIsX >() << endl; cout << getIsTrue< isX<uint8>::ikIsX >() << endl; cout << getIsTrue< isX<char>::ikIsX >() << endl;
答案:
C 將 char、signed char 和 unsigned char 區分為三種不同的類型。這就是為什麼 char、int8 和 uint8 的模板實例化是不同的。
然而,對於整數,int 和signed int 是相同的型,而 unsigned int 是不同的型別。這就是為什麼 int、int32 和 uint32 的模板實例化只會產生兩個唯一的模板。
標準[basic.fundamental](https://eel.is/c Draft/basic.fundamental) 指出:
「普通字元、有符號字元和無符號字元是三種不同的類型。
以上是為什麼 C 中「char」、「signed char」和「unsigned char」與「int」、「signed int」和「unsigned int」的處理方式不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!