[爆卦]unsigned char範圍是什麼?優點缺點精華區懶人包

為什麼這篇unsigned char範圍鄉民發文收入到精華區:因為在unsigned char範圍這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Favonia (小西風最乖了*^^*)看板C_and_CPP標題Re: [問題] signed...


補充一些版友沒有提到的...

※ 引述《DRLai (蘇打)》之銘言:
: 想請教關於 signed char 以及 unsigned char 使用時機
: google 了一下,似乎有寫到 signed / unsigned char 差在數值範圍
: (signed char = -128~127, unsigned char = 0~255)

這個範圍可能是錯的。要知道範圍,務必查下面四個常數

SCHAR_MAX
SCHAR_MIN
UCHAR_MAX
USHRT_MAX

或是你系統 ABI 的文件。這些數字都沒有標準答案。SCHAR_MIN 甚至
可能只有 -127.

: → azureblaze:char是signed 還是unsigned視編譯器而定,標準沒規定 08/29 19:45
: → azureblaze:gcc和msvc預設都是signed的樣子 08/29 19:46
: → azureblaze:負數char就用在需要範圍是 -128~127的時候 08/29 19:49
: → azureblaze:char的用途不是只有字元而已 08/29 19:50
範圍不大對...

: → DRLai:可以把他想成是節省記憶體的方式嗎?short=2bytes char=1byte 08/29 19:57
通常可以,但請查你用的系統的 ABI. 雖然 C 很低階,但決定這些的
都不是 C 語言本身,而是 ABI! 如果只看語言本身,char 可以是 65536bits
都不違反標準。 short 也不一定真的比較大。一切都由 ABI 定死真正大小。
(對了,你也不能用 sizeof 知道 char 的大小,要看 CHAR_BIT, 因為 C
語言直接把 "byte" 定義為 char 的大小...)

: → cortex1234:signed char 和 unsigned char 轉型成 int 時就不同了 08/29 20:03
: → cortex1234:你可以把它理解成 int8_t 和 uint8_t 08/29 20:04
嚴格來說都不一樣... orz

: 推 xvid:其實就在大小之分 如果你的數值在-128~127也可以用s char 08/29 20:38
範圍不大對...

: 推 loveme00835:用型態描述值域。有的人數值只有真/偽也在用int,只 08/29 20:52
: 推 loveme00835:有0~10也在用int,那種 code 看到要吐血 08/29 20:52
用 char 不一定比較快,範圍也不一定比較小啊!如果要速度應該要用
int_fast8_t 才對(如果有支援)。如果要限定範圍,只有 intX_t 之類才
是可靠的。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.39
saxontai:推正解 08/31 14:40
askacis:以ARM來說,用char不如用int,速度更快,沒有必要的話是 08/31 21:47
DRLai:瞭解了~ 好詳細 XD 09/01 23:04
xvid:推 確實是看環境 09/02 13:50

你可能也想看看

搜尋相關網站