打印

求教C语言高手

[复制链接]
1708|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyww123|  楼主 | 2015-2-10 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zhangmangui| | 2015-2-10 20:57 | 只看该作者
无符号char啊   

使用特权

评论回复
板凳
海中水| | 2015-2-11 09:19 | 只看该作者
若定义一个命令i的变量如下:
char i;//有符号8位变量
unsigned char i;//无符号8位变量

使用特权

评论回复
地板
wei3890836| | 2015-2-25 13:59 | 只看该作者
32位的DSP没有8位,最低都是16位的,要想定义一个8位的变量,只能与上0x00ff,这个可以用modbus来验证,你看crc校验部分

使用特权

评论回复
5
zhangmangui| | 2015-3-2 23:02 | 只看该作者
wei3890836 发表于 2015-2-25 13:59
32位的DSP没有8位,最低都是16位的,要想定义一个8位的变量,只能与上0x00ff,这个可以用modbus来验证,你 ...

恩  是的   DSP的变量比较多和奇特

使用特权

评论回复
6
海中水| | 2015-3-3 12:39 | 只看该作者
wei3890836 发表于 2015-2-25 13:59
32位的DSP没有8位,最低都是16位的,要想定义一个8位的变量,只能与上0x00ff,这个可以用modbus来验证,你 ...

程序里面不能定义一个8位的变量吗?

使用特权

评论回复
7
wei3890836| | 2015-3-4 09:39 | 只看该作者
海中水 发表于 2015-3-3 12:39
程序里面不能定义一个8位的变量吗?

不能啊,实际上使用的时候是16位的,这点和单片机以及ARM不一样

使用特权

评论回复
8
wei3890836| | 2015-3-4 09:42 | 只看该作者
海中水 发表于 2015-3-3 12:39
程序里面不能定义一个8位的变量吗?

https://bbs.21ic.com/icview-37747-1-1.html   
很早之前的一个相同问题 :)

使用特权

评论回复
9
海中水| | 2015-3-4 10:18 | 只看该作者
wei3890836 发表于 2015-3-4 09:42
https://bbs.21ic.com/icview-37747-1-1.html   
很早之前的一个相同问题

这是从数据线上得到8位数据哦!

使用特权

评论回复
10
海中水| | 2015-3-4 10:20 | 只看该作者
wei3890836 发表于 2015-3-4 09:42
https://bbs.21ic.com/icview-37747-1-1.html   
很早之前的一个相同问题

这应该不是定义一个变量吧!汇编的时候可能会是这样。

使用特权

评论回复
11
wei3890836| | 2015-3-4 13:41 | 只看该作者
海中水 发表于 2015-3-4 10:20
这应该不是定义一个变量吧!汇编的时候可能会是这样。

dsp数据总线上最少都是16位的话,那么变量怎么定义8位呢,这点我没想明白,但首先一点char是16位的

使用特权

评论回复
12
海中水| | 2015-3-4 15:03 | 只看该作者
wei3890836 发表于 2015-3-4 13:41
dsp数据总线上最少都是16位的话,那么变量怎么定义8位呢,这点我没想明白,但首先一点char是16位的 ...

这一点真颠覆了我之前的观点了,也就是说在编写程序中char是16位的。难道是我错了吗?

使用特权

评论回复
13
wei3890836| | 2015-3-4 20:29 | 只看该作者
海中水 发表于 2015-3-4 15:03
这一点真颠覆了我之前的观点了,也就是说在编写程序中char是16位的。难道是我错了吗? ...

呵呵,貌似是的。但ARM和如AVR的单片机的CHAR是8位的

使用特权

评论回复
14
海中水| | 2015-3-5 09:17 | 只看该作者
wei3890836 发表于 2015-3-4 20:29
呵呵,貌似是的。但ARM和如AVR的单片机的CHAR是8位的

好像不是吧!这好像也得好编译器有一定关系的。

使用特权

评论回复
15
海中水| | 2015-3-5 09:18 | 只看该作者
wei3890836 发表于 2015-3-4 20:29
呵呵,貌似是的。但ARM和如AVR的单片机的CHAR是8位的

这个问题我之前没有关注过,如果有不对的地方,还请多多指教。

使用特权

评论回复
16
icegoat| | 2015-3-5 09:26 | 只看该作者
拿16位的空间来当8位的用,char其实就是低8位,高8位闲置~

使用特权

评论回复
17
海中水| | 2015-3-5 09:37 | 只看该作者
icegoat 发表于 2015-3-5 09:26
拿16位的空间来当8位的用,char其实就是低8位,高8位闲置~

我也觉得应该是这样,怎么可能定义一个char,然后就为8位了呢?这不是和标准C语言有点冲突了吗?

使用特权

评论回复
18
wei3890836| | 2015-3-5 09:39 | 只看该作者
icegoat 发表于 2015-3-5 09:26
拿16位的空间来当8位的用,char其实就是低8位,高8位闲置~

这个对进位有很大的影响,你像modbus的校验部分,如果不对16进制做0x00ff处理的话,校验码是不对的

使用特权

评论回复
19
wei3890836| | 2015-3-5 09:40 | 只看该作者
海中水 发表于 2015-3-5 09:18
这个问题我之前没有关注过,如果有不对的地方,还请多多指教。

没啥指教的,正好前一段时间做modbus通信,这地方遇到过问题,就关注了,以后还指望版主大大多帮助我呢

使用特权

评论回复
20
海中水| | 2015-3-5 10:37 | 只看该作者
wei3890836 发表于 2015-3-5 09:40
没啥指教的,正好前一段时间做modbus通信,这地方遇到过问题,就关注了,以后还指望版主大大多帮助我呢 ...

我的抽空测试一下。我做的是电源方面的,用的都是C2000。我这里定义的都是用char作为8位数据,我的查看一下了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝