Re: [問題] signed char 使用時機

看板C_and_CPP作者 (小西風最乖了*^^*)時間10年前 (2013/08/30 22:41), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串2/2 (看更多)
補充一些版友沒有提到的... ※ 引述《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

08/31 14:40, , 1F
推正解
08/31 14:40, 1F

08/31 21:47, , 2F
以ARM來說,用char不如用int,速度更快,沒有必要的話是
08/31 21:47, 2F

09/01 23:04, , 3F
瞭解了~ 好詳細 XD
09/01 23:04, 3F

09/02 13:50, , 4F
推 確實是看環境
09/02 13:50, 4F
文章代碼(AID): #1I8AyBKL (C_and_CPP)
文章代碼(AID): #1I8AyBKL (C_and_CPP)