搜索
bottom↓
回复: 13

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

[复制链接]
(170545519)

出0入0汤圆

发表于 2016-8-28 01:22:08 | 显示全部楼层 |阅读模式
随着见的代码越来越多,发现在字符串数组定义时大家都喜欢用unsigned char ,而很少用char型变量。但是在C语言的库文件里关于字符串的函数变量又多是char型的,这是为什么呢?
(170537915)

出0入93汤圆

发表于 2016-8-28 03:28:52 来自手机 | 显示全部楼层
因为使用unsigned char的那些都是不守规矩的,不守规矩的多了,就成了你看见的样子。C语言明确规定,char为字符型,是组成字符串的基本单位,而unsigned char和signed char则是整型,是数值型,同字符串没有任何关系。同样的还有bool类型,C99加入。
(170526020)

出0入0汤圆

发表于 2016-8-28 06:47:07 来自手机 | 显示全部楼层
想表达字符就用char,想表达数值就用uint8_t或int8_t
(170522662)

出0入0汤圆

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

哈哈,原来如此。。。。。。
(170522630)

出0入0汤圆

发表于 2016-8-28 07:43:37 | 显示全部楼层
如果想显示汉字 就要用uint_8了
(170238701)

出0入0汤圆

发表于 2016-8-31 14:35:46 | 显示全部楼层
3楼正解,字符串是英文的,某些编译器会自动处理最高位,但中文都是双字节,最高位为1的。
(170223985)

出0入0汤圆

发表于 2016-8-31 18:41:02 来自手机 | 显示全部楼层
如果铁定是无符号的东西的话,能表示更大的数啊。
(170028452)

出0入0汤圆

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

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

出0入0汤圆

发表于 2016-9-3 14:10:14 来自手机 | 显示全部楼层
很多mcu的char都是8bit的,int都是16bit的。如果确定变量低于256。又不确定平台的int宽度,声明uchar最方便。
(169977156)

出0入46汤圆

发表于 2016-9-3 15:14:51 | 显示全部楼层
对字符串来说,好像这个没啥差别
(169976077)

出0入8汤圆

发表于 2016-9-3 15:32:50 | 显示全部楼层
对于char来说,IDE平台会指定是signed char 还是 unsigned char的,可以修改默认值的。
(169635254)

出0入0汤圆

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

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

出0入0汤圆

发表于 2016-9-21 08:54:19 | 显示全部楼层
有号数使用上会少一半,毕竟带负号的比较少用。
(168444015)

出0入0汤圆

发表于 2016-9-21 09:07:12 | 显示全部楼层
我也不懂,我也是来学习的。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2022-1-22 23:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表