搜索
bottom↓
回复: 27

字符数组 char temp[30] 与unsigned char temp[30]区别

[复制链接]

出0入0汤圆

发表于 2012-8-28 13:40:11 | 显示全部楼层 |阅读模式
定义一个字符数组,并且存中文,所以这样定义char temp[30]="保存中文",为什么不能这样定义:unsigned char temp[30]="保存中文",

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-8-28 14:04:51 | 显示全部楼层
谁说不能

出0入0汤圆

发表于 2012-8-28 16:17:44 来自手机 | 显示全部楼层
好像可以吧

出0入0汤圆

 楼主| 发表于 2012-8-28 18:45:08 | 显示全部楼层
lcw_swust 发表于 2012-8-28 14:04
谁说不能

我在写程序过程中,的确是不行的。你能具体分体一下吗?

出0入0汤圆

发表于 2012-8-28 18:46:13 | 显示全部楼层
不可以,不知道原因

出0入0汤圆

发表于 2012-8-28 20:07:14 | 显示全部楼层
86793 发表于 2012-8-28 18:45
我在写程序过程中,的确是不行的。你能具体分体一下吗?

不行?
是编译出现错误,还是实物出现错误?

出0入0汤圆

 楼主| 发表于 2012-8-28 20:49:02 | 显示全部楼层
BXAK 发表于 2012-8-28 20:07
不行?
是编译出现错误,还是实物出现错误?

编绎不会出现错误的,是实物出错误,我在网上查了一些资料,都没有查到结果。5楼也遇到这样情况是吧?

出0入0汤圆

发表于 2012-8-28 20:50:47 | 显示全部楼层
代码。。来看看。。

出0入4汤圆

发表于 2012-8-28 21:24:16 | 显示全部楼层
MSB可否为1的问题吧

出0入0汤圆

发表于 2012-8-28 21:38:05 | 显示全部楼层
可以的,我一直这么用

出0入442汤圆

发表于 2012-8-28 23:15:01 | 显示全部楼层
这问题非常幼稚。char是带符号数,uchar是无符号数,编译器编译时是检查符号的。当然你可以强制转换。

出0入0汤圆

发表于 2012-8-29 17:28:21 | 显示全部楼层
86793 发表于 2012-8-28 18:45
我在写程序过程中,的确是不行的。你能具体分体一下吗?

这就要看你的程序了,
一般情况下,char 是有符号数,unsigned char 是无符号数

出0入0汤圆

 楼主| 发表于 2012-8-29 19:04:07 | 显示全部楼层
lcw_swust 发表于 2012-8-29 17:28
这就要看你的程序了,
一般情况下,char 是有符号数,unsigned char 是无符号数

这个我明白,但是在KIEL软件中用 unsignef char数组 方式来存中文的确不行。只能用char数组。难道其他人没有遇到呀。

出0入0汤圆

发表于 2012-8-29 20:30:04 | 显示全部楼层
86793 发表于 2012-8-29 19:04
这个我明白,但是在KIEL软件中用 unsignef char数组 方式来存中文的确不行。只能用char数组。难道其他人 ...

我的KEIL2可以,楼主为什么说它不行

出0入0汤圆

发表于 2012-8-29 20:33:41 | 显示全部楼层
不行是怎么不行?

出0入0汤圆

发表于 2012-8-29 20:57:01 | 显示全部楼层
肯定不行,找的是汉字内码,内码大于127时有符号的就会出问题

出0入0汤圆

发表于 2012-8-29 20:59:26 | 显示全部楼层
保0xB1A3
存0xB4E6
中0xD6D0
文0xCEC4

出0入0汤圆

 楼主| 发表于 2012-8-29 23:53:22 | 显示全部楼层
xiahang 发表于 2012-8-29 20:59
保0xB1A3
存0xB4E6
中0xD6D0

明白,这个是汉字的内码,汉字内码占2个字节,并且每个字节都是大于127的,所以按道理理说应该是unsigned char temp[30]的!

出0入42汤圆

发表于 2012-8-29 23:56:57 | 显示全部楼层
楼上的说法不准确哈,oxFF赋值给uchar或char都是可以的

出0入0汤圆

发表于 2012-8-30 00:01:15 | 显示全部楼层
一直用unsigned char,没出现问题过。只是KEIL的一个BUG令我蛋疼过,是0XFE的问题,如果我没记错的话。

出0入0汤圆

发表于 2012-8-30 01:28:35 | 显示全部楼层
RUANJI 发表于 2012-8-30 00:01
一直用unsigned char,没出现问题过。只是KEIL的一个BUG令我蛋疼过,是0XFE的问题,如果我没记错的话。 ...

你记错了,是0XFD的问题,

出0入0汤圆

发表于 2012-8-30 01:29:49 | 显示全部楼层
两种定义在内存上没有差别, 可能是你使用这个数组的那个函数里面有问题.

出0入0汤圆

发表于 2012-8-30 07:37:37 | 显示全部楼层
还好咱用sdcc没这个问题

出0入0汤圆

发表于 2012-8-30 08:42:31 | 显示全部楼层
无符号的空间估计比有符号的要小,估计用了无符号的溢出了。

出0入0汤圆

 楼主| 发表于 2012-9-8 00:12:14 | 显示全部楼层
RUANJI 发表于 2012-8-30 00:01
一直用unsigned char,没出现问题过。只是KEIL的一个BUG令我蛋疼过,是0XFE的问题,如果我没记错的话。 ...

我遇到过0xfd的问题。0xfe 什么问题呀。

出0入0汤圆

 楼主| 发表于 2012-9-8 00:15:32 | 显示全部楼层
我今天将char temp[30]="保存中文",改为unsigned char temp[30]="保存中文",都能够得到正确的结果。真是混了。非常感谢各位的热心网友帮忙

出0入0汤圆

发表于 2012-9-8 00:30:36 | 显示全部楼层
86793 发表于 2012-9-8 00:12
我遇到过0xfd的问题。0xfe 什么问题呀。

是0XFD的问题。

出0入0汤圆

发表于 2012-9-8 08:57:08 来自手机 | 显示全部楼层
86793 发表于 2012-9-8 00:15
我今天将char temp[30]="保存中文",改为unsigned char temp[30]="保存中文",都能够得到正确的结果。真是混 ...

因为是八位单片机 汉字内码虽然是两个字节 但存进数组是一个字节一个字节的 也就是说内码最大只存进0xFF char和uchar均可
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 22:21

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

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