C標準狀態:爲什麼char在C中沒有定義符號?
ISO/IEC 9899:1999,6.2.5.15(第49)
三種類型CHAR,符號的字符,和 無符號字符統稱 字符類型。 實現應該定義字符到 具有相同的範圍,表示形式, 和行爲爲signed char或 unsigned char。
確實gcc根據目標平臺定義。
我的問題是,爲什麼標準這樣做?我看不出任何可以從模糊的類型定義中得出的東西,除了可怕的和難以發現的錯誤之外。
此外,在ANSI C(C99之前)中,唯一的字節大小的類型是char,所以使用char作爲數學有時是不可避免的。所以說「一個人不應該用數學來表達」並不是那麼真實。如果是這樣的話,一個更明智的決定是包括三種類型「char
,ubyte
,sbyte
」。
是否有原因,或者它只是一些奇怪的向後兼容性問題,爲了讓壞的(但常見的)編譯器被定義爲標準兼容?
[任何需要將'char'作爲'unsigned'的編譯器?](http://stackoverflow.com/q/3728045/995714) – 2016-02-20 03:27:15