wangsen 发表于 2016-8-28 01:22:08

为什么字符串用unsigned char ,很少用 char

随着见的代码越来越多,发现在字符串数组定义时大家都喜欢用unsigned char ,而很少用char型变量。但是在C语言的库文件里关于字符串的函数变量又多是char型的,这是为什么呢?

takashiki 发表于 2016-8-28 03:28:52

因为使用unsigned char的那些都是不守规矩的,不守规矩的多了,就成了你看见的样子。C语言明确规定,char为字符型,是组成字符串的基本单位,而unsigned char和signed char则是整型,是数值型,同字符串没有任何关系。同样的还有bool类型,C99加入。

wshtyr 发表于 2016-8-28 06:47:07

想表达字符就用char,想表达数值就用uint8_t或int8_t

prince2010 发表于 2016-8-28 07:43:05

takashiki 发表于 2016-8-28 03:28
因为使用unsigned char的那些都是不守规矩的,不守规矩的多了,就成了你看见的样子。C语言明确规定,char为 ...

哈哈,原来如此。。。。。。

登云钓月 发表于 2016-8-28 07:43:37

如果想显示汉字 就要用uint_8了

learner123 发表于 2016-8-31 14:35:46

3楼正解,字符串是英文的,某些编译器会自动处理最高位,但中文都是双字节,最高位为1的。

censtar 发表于 2016-8-31 18:41:02

如果铁定是无符号的东西的话,能表示更大的数啊。

wangsen 发表于 2016-9-3 00:59:55

learner123 发表于 2016-8-31 14:35
3楼正解,字符串是英文的,某些编译器会自动处理最高位,但中文都是双字节,最高位为1的。 ...

那就是说在实际当中,有些编译器会对字符串的符号位进行处理,而使用无符号型的,就可以防止因它处理导致数据变化是不是?

wwuchang 发表于 2016-9-3 14:10:14

很多mcu的char都是8bit的,int都是16bit的。如果确定变量低于256。又不确定平台的int宽度,声明uchar最方便。

jasonzhu8888 发表于 2016-9-3 15:14:51

对字符串来说,好像这个没啥差别

Elex 发表于 2016-9-3 15:32:50

对于char来说,IDE平台会指定是signed char 还是 unsigned char的,可以修改默认值的。

learner123 发表于 2016-9-7 14:13:13

wangsen 发表于 2016-9-3 00:59
那就是说在实际当中,有些编译器会对字符串的符号位进行处理,而使用无符号型的,就可以防止因它处理导致 ...

顺便扯一点,众所周知的keil C51对中文支持不太好,特别是在“”中的中文字符串...对ASCII来说除了扩展格式字符,可显示字符最高位没有为1的(符号型的负数)。所以keil C51针对个别中文字符处理会出错但不会影响英文字符。

peecehood 发表于 2016-9-21 08:54:19

有号数使用上会少一半,毕竟带负号的比较少用。

潘河霖 发表于 2016-9-21 09:07:12

我也不懂,我也是来学习的。。。{:loveliness:}
页: [1]
查看完整版本: 为什么字符串用unsigned char ,很少用 char