智能车制作

标题: 错用*p++怎么还能跑,不解 [打印本页]

作者: N_O    时间: 2012-4-11 23:02
标题: 错用*p++怎么还能跑,不解
  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) ;//后来加了一些东西进去,结果不能跑了,不小心把原来的程序覆盖了了,
复制代码



作者: hang    时间: 2012-4-11 23:48
巧合
作者: N_O    时间: 2012-4-12 10:09
hang 发表于 2012-4-11 23:48
巧合

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

作者: raysmile    时间: 2012-4-12 12:08
指针运算和自增自减运算的优先级是一样的,系统就按照从左到右的顺序处理,所以*sump1--就等同于(*sump)--
好好看看C语言吧
作者: N_O    时间: 2012-4-12 12:43
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. }
复制代码
嘿嘿,他们优先级虽然是相同的,但是他的结合顺序是从右到左

作者: raysmile    时间: 2012-4-12 12:57





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