86793 发表于 2012-8-28 13:40:11

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

定义一个字符数组,并且存中文,所以这样定义char temp="保存中文",为什么不能这样定义:unsigned char temp="保存中文",

lcw_swust 发表于 2012-8-28 14:04:51

谁说不能

gaoyichuan000 发表于 2012-8-28 16:17:44

好像可以吧

86793 发表于 2012-8-28 18:45:08

lcw_swust 发表于 2012-8-28 14:04 static/image/common/back.gif
谁说不能

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

qinpenglai 发表于 2012-8-28 18:46:13

不可以,不知道原因

BXAK 发表于 2012-8-28 20:07:14

86793 发表于 2012-8-28 18:45 static/image/common/back.gif
我在写程序过程中,的确是不行的。你能具体分体一下吗?

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

86793 发表于 2012-8-28 20:49:02

BXAK 发表于 2012-8-28 20:07 static/image/common/back.gif
不行?
是编译出现错误,还是实物出现错误?

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

myqiang1990 发表于 2012-8-28 20:50:47

代码。。来看看。。

sunliezhi 发表于 2012-8-28 21:24:16

MSB可否为1的问题吧

夏日么么茶 发表于 2012-8-28 21:38:05

可以的,我一直这么用

wye11083 发表于 2012-8-28 23:15:01

这问题非常幼稚。char是带符号数,uchar是无符号数,编译器编译时是检查符号的。当然你可以强制转换。

lcw_swust 发表于 2012-8-29 17:28:21

86793 发表于 2012-8-28 18:45 static/image/common/back.gif
我在写程序过程中,的确是不行的。你能具体分体一下吗?

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

86793 发表于 2012-8-29 19:04:07

lcw_swust 发表于 2012-8-29 17:28 static/image/common/back.gif
这就要看你的程序了,
一般情况下,char 是有符号数,unsigned char 是无符号数

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

lcw_swust 发表于 2012-8-29 20:30:04

86793 发表于 2012-8-29 19:04 static/image/common/back.gif
这个我明白,但是在KIEL软件中用 unsignef char数组 方式来存中文的确不行。只能用char数组。难道其他人 ...

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

health 发表于 2012-8-29 20:33:41

不行是怎么不行?

xiahang 发表于 2012-8-29 20:57:01

肯定不行,找的是汉字内码,内码大于127时有符号的就会出问题

xiahang 发表于 2012-8-29 20:59:26

保0xB1A3
存0xB4E6
中0xD6D0
文0xCEC4

86793 发表于 2012-8-29 23:53:22

xiahang 发表于 2012-8-29 20:59 static/image/common/back.gif
保0xB1A3
存0xB4E6
中0xD6D0


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

albert_w 发表于 2012-8-29 23:56:57

楼上的说法不准确哈,oxFF赋值给uchar或char都是可以的

RUANJI 发表于 2012-8-30 00:01:15

一直用unsigned char,没出现问题过。只是KEIL的一个BUG令我蛋疼过,是0XFE的问题,如果我没记错的话。

shark 发表于 2012-8-30 01:28:35

RUANJI 发表于 2012-8-30 00:01 static/image/common/back.gif
一直用unsigned char,没出现问题过。只是KEIL的一个BUG令我蛋疼过,是0XFE的问题,如果我没记错的话。 ...

你记错了,是0XFD的问题,{:titter:}

shark 发表于 2012-8-30 01:29:49

两种定义在内存上没有差别, 可能是你使用这个数组的那个函数里面有问题.

xwkm 发表于 2012-8-30 07:37:37

还好咱用sdcc没这个问题

xts 发表于 2012-8-30 08:42:31

无符号的空间估计比有符号的要小,估计用了无符号的溢出了。

86793 发表于 2012-9-8 00:12:14

RUANJI 发表于 2012-8-30 00:01 static/image/common/back.gif
一直用unsigned char,没出现问题过。只是KEIL的一个BUG令我蛋疼过,是0XFE的问题,如果我没记错的话。 ...

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

86793 发表于 2012-9-8 00:15:32

我今天将char temp="保存中文",改为unsigned char temp="保存中文",都能够得到正确的结果。真是混了。非常感谢各位的热心网友帮忙

RUANJI 发表于 2012-9-8 00:30:36

86793 发表于 2012-9-8 00:12 static/image/common/back.gif
我遇到过0xfd的问题。0xfe 什么问题呀。

是0XFD的问题。

gaoyichuan000 发表于 2012-9-8 08:57:08

86793 发表于 2012-9-8 00:15
我今天将char temp="保存中文",改为unsigned char temp="保存中文",都能够得到正确的结果。真是混 ...

因为是八位单片机 汉字内码虽然是两个字节 但存进数组是一个字节一个字节的 也就是说内码最大只存进0xFF char和uchar均可
页: [1]
查看完整版本: 字符数组 char temp[30] 与unsigned char temp[30]区别