智能车制作

标题: 字符‘0’与数字0 [打印本页]

作者: sunzhaoxing2012    时间: 2013-1-27 17:21
标题: 字符‘0’与数字0
这可是我纠结了一晚上和一下午得到的教训,特和各位车友分享。
我是想写编码器速度在5110的显示函数,可我只有一个5110的字符串显示函数,理所当然,我就把编码器的速度数组后面添加了'\0’,如图1,可最后5110就是不显示任何数值。费了好长时间,改了程序的各个部分都失败了,最后才发觉时问题出在了C语言基本的分辨上,我是用'\0'来判断字符串是否循环完毕的,可数值0对应的ASCII码表正是\0,因此一到字符串写循环就跳出了。修改方法就是在每个数组元素上都加上0x30.不知道各位车友以前有没有遇到类似糟心的事情,拿来分享一下,毕竟前事不忘后事之师嘛,给我们也提个醒。

作者: yukunlinykl    时间: 2013-1-27 17:36
经典bug。
这也正是C语言太低级的一个体现。
作者: exiao    时间: 2013-1-27 17:53
这都被楼主发现了
作者: sunzhaoxing2012    时间: 2013-1-27 17:58
exiao 发表于 2013-1-27 17:53
这都被楼主发现了

大神有什么经验拿来和大家分享一下呗
作者: sunzhaoxing2012    时间: 2013-1-27 18:00
yukunlinykl 发表于 2013-1-27 17:36
经典bug。
这也正是C语言太低级的一个体现。

以前写程序时就没注意char与int的区别,潜意识的就是大数用int,小数用char
作者: yukunlinykl    时间: 2013-1-27 18:06
sunzhaoxing2012 发表于 2013-1-27 18:00
以前写程序时就没注意char与int的区别,潜意识的就是大数用int,小数用char

int 的存在本身是为了效率而考虑的。
他的存在简直是兼容性杀手。

作者: glacier0    时间: 2013-1-27 19:11
一样。。所以我不得不把数据转成ASCII的形式,浪费额外时间
作者: suebillt    时间: 2013-1-27 19:46
每次编程都为此烦恼,很郁闷啊
作者: 简单丹    时间: 2013-1-27 19:51
好麻烦这个东东....
作者: sunzhaoxing2012    时间: 2013-1-27 20:46
glacier0 发表于 2013-1-27 19:11
一样。。所以我不得不把数据转成ASCII的形式,浪费额外时间

大神是怎么转换的,如果只是数字0到9的话,我的方法是全部加上0x30,如图一
作者: glacier0    时间: 2013-1-27 21:05
sunzhaoxing2012 发表于 2013-1-27 20:46
大神是怎么转换的,如果只是数字0到9的话,我的方法是全部加上0x30,如图一

一样。。。

作者: lx1122334    时间: 2013-1-27 22:01
大神们、、




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2