智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1767|回复: 5
打印 上一主题 下一主题

错用*p++怎么还能跑,不解

[复制链接]

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
453
威望
257
贡献
102
兑换币
0
注册时间
2012-4-7
在线时间
47 小时
跳转到指定楼层
1#
发表于 2012-4-11 23:02:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. for(j=0;j<VIDEO_HEIGHT;++j){//以左边黑为-1,右边黑为1,求和。来决定左右转
  2.           VideoP = Video[VIDEO_HEIGHT-j-1];
  3.       
  4.           while(VideoCollectLine<= j);
  5.           whiteflag = 0;
  6.    
  7.           for(i=1;i<VIDEO_WIDTH-1;++i){
  8. if(!BINARY((VideoP[i-1]+VideoP[i]+VideoP[i+1])/3)){         
  9.               if(!whiteflag)
  10.                 *sump1--;//应该是 (*sump1)--的,但是神奇的是还能转弯
  11.               else
  12.                 *sump1++;//效果是直道也不停的左右转,弯道能弯,但每次都是最大幅值(我后面限幅了)
  13.             }                //sump 指向临时变量
  14.             else{
  15.               whiteflag = 1;
  16.             }
  17.           }
  18.          if(whiteflag ==0 && (*sump1)>0)
  19.           *sump1 += 2*(VIDEO_WIDTH-1) ;//后来加了一些东西进去,结果不能跑了,不小心把原来的程序覆盖了了,
复制代码


32

主题

646

帖子

0

精华

常驻嘉宾

Mechanical Engineering

Rank: 8Rank: 8

积分
4785

热心会员奖章优秀会员奖章在线王奖章活跃会员奖章

QQ
威望
2078
贡献
819
兑换币
378
注册时间
2011-11-14
在线时间
944 小时
2#
发表于 2012-4-11 23:48:28 | 只看该作者
巧合
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
453
威望
257
贡献
102
兑换币
0
注册时间
2012-4-7
在线时间
47 小时
3#
 楼主| 发表于 2012-4-12 10:09:49 | 只看该作者
hang 发表于 2012-4-11 23:48
巧合

囧。你知道不知道该怎么修改啊,我昨晚快断电了,匆忙之下发错版块了
回复 支持 反对

使用道具 举报

8

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2284
威望
1122
贡献
572
兑换币
23
注册时间
2011-10-13
在线时间
295 小时
4#
发表于 2012-4-12 12:08:01 | 只看该作者
指针运算和自增自减运算的优先级是一样的,系统就按照从左到右的顺序处理,所以*sump1--就等同于(*sump)--
好好看看C语言吧
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
453
威望
257
贡献
102
兑换币
0
注册时间
2012-4-7
在线时间
47 小时
5#
 楼主| 发表于 2012-4-12 12:43:22 | 只看该作者
raysmile 发表于 2012-4-12 12:08
指针运算和自增自减运算的优先级是一样的,系统就按照从左到右的顺序处理,所以*sump1--就等同于(*sump)--
...
  1. #include<stdio.h>
  2. void main(void)
  3. {
  4.         int a = 0;
  5.         int *p = &a;
  6. //  int b =*p++;
  7. //        printf("%d",b);

  8.         printf("%d\n",*p++);
  9.         printf("%d\n",*p++);
  10.         printf("%d\n",*p++);
  11. }
复制代码
嘿嘿,他们优先级虽然是相同的,但是他的结合顺序是从右到左
回复 支持 反对

使用道具 举报

8

主题

143

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2284
威望
1122
贡献
572
兑换币
23
注册时间
2011-10-13
在线时间
295 小时
6#
发表于 2012-4-12 12:57:40 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-5 10:27 , Processed in 0.064502 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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