搜索
bottom↓
回复: 13

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

[复制链接]

出0入0汤圆

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入93汤圆

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

出0入42汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入46汤圆

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

出0入16汤圆

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

出0入0汤圆

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

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

出0入0汤圆

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

出0入0汤圆

发表于 2016-9-21 09:07:12 | 显示全部楼层
我也不懂,我也是来学习的。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 17:00

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

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