nydns 发表于 2012-9-15 10:05:44

if(AA>0)就是不好使.

本帖最后由 nydns 于 2012-9-15 14:05 编辑

unsigned char buf={0};
unsigned char AA=0;

AA=buf[--j];
//SBUF=buf;结果正确
//SBUF中为16进制13;10进制19;

if(AA>0)
{}//这里不执行啊
else
{}//总是执行这里


谢谢大家问题解决了

Tliang 发表于 2012-9-15 10:33:04

buf = 0
所以执行else这里的代码了。检查一下buf为什么等于0就知道了

babysnail 发表于 2012-9-15 10:38:45

--j 与
j--

不同哦騒年!?

nydns 发表于 2012-9-15 11:17:04

Tliang 发表于 2012-9-15 10:33 static/image/common/back.gif
buf = 0
所以执行else这里的代码了。检查一下buf为什么等于0就知道了

SBUF=buf;结果正确
buf不为0

nydns 发表于 2012-9-15 11:18:15

babysnail 发表于 2012-9-15 10:38 static/image/common/back.gif
--j 与
j--



先减 后减这我明白

longwu537 发表于 2012-9-15 11:18:39

buf={0};这个不是限定了buf[]都是0,所以AA>0当然不成立了,你用了串口接收到了数据,所以就改变了,就正常了呗……

younge 发表于 2012-9-15 11:27:07

蛋疼,为什么要用【--j】,这样显得高手专业吗?
刚学谭浩强的c时候我时不时这样玩,后来就不了。宁可多些几行

Tliang 发表于 2012-9-15 13:51:44

nydns 发表于 2012-9-15 11:17 static/image/common/back.gif
SBUF=buf;结果正确
buf不为0

AA为无符号字符型是从0~255,if(AA > 0)除了为0这个条件不成立外还有其他条件不成立吗、、、?
还有你的程序第一行unsigned char buf = {0}我不知道是将99个单元都写0还是将1个写0.如果是全写0.那么你的程序一进入这个子程序buf里面的数据全清0了。这时候你说buf里面的数据不是0吗??除非你的j是一个超过下标值,那么就有可能不是0.

Tliang 发表于 2012-9-15 14:03:26

就算你的unsigned char buf = {0}为全局变量。j = 100,那么你在前面99次都是在else这个里面。你有没有试过接到100个数据只后?一百个数据之后你又有没有重新设置j的值?你贴这么点程序出来谁看的出呢。。你贴的这个所有的代码是在一个函数里面?还是一部分在函数里面?一部分是全局?

yaake 发表于 2012-9-15 17:00:53

LZ解决了的话,最好把自己解决的方法说一下,问题在哪里。方便大家也方便自己

ywl0409 发表于 2012-9-15 17:36:08

LZ可以这样调试一下:
AA=1;
if(AA>0)
{}
else
{}
看看这个条件判断是如何执行的?

nydns 发表于 2012-9-16 00:48:27

ywl0409 发表于 2012-9-15 17:36 static/image/common/back.gif
LZ可以这样调试一下:
AA=1;
if(AA>0)


谢谢 代码很长我只帖了一部分.问题解决了.

millwood0 发表于 2012-9-16 05:40:17

问题解决了.

and you don't think you owe it to those who helped you to explain how you debugged it?

if so, assholes like you should be permanently banned from this forum.

zhangsusu 发表于 2012-9-16 05:55:47

younge 发表于 2012-9-15 11:27
蛋疼,为什么要用【--j】,这样显得高手专业吗?
刚学谭浩强的c时候我时不时这样玩,后来就不了。宁可多些 ...

一行代码就干一个事情 所有的事情显示的干出来 亏好我们当年用的是老师自己写的讲义
后来看了 c专家编程 c与指针 都这样强调

xuzixin 发表于 2012-9-26 10:52:33

同志buf数组太大了,总共128字节。去掉8字节的R0~R7。还有堆栈

xuzixin 发表于 2012-9-26 10:54:40

用51声明数组一定要精打细算。不要像微机下编程,声明大点也无所谓。
页: [1]
查看完整版本: if(AA>0)就是不好使.