首頁  >  文章  >  後端開發  >  為什麼 C 中「char」、「signed char」和「unsigned char」與「int」、「signed int」和「unsigned int」的處理方式不同?

為什麼 C 中「char」、「signed char」和「unsigned char」與「int」、「signed int」和「unsigned int」的處理方式不同?

Barbara Streisand
Barbara Streisand原創
2024-10-26 22:37:03275瀏覽

Why are `char`, `signed char`, and `unsigned char` Treated Differently from `int`, `signed int`, and `unsigned int` in C  ?

Char!=(Signed Char), Char!=(Unsigned Char)

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn