欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: [求助]為什么這個函數返回來的永遠是0x00 [打印本頁]

作者: lp3659    時間: 2009-11-5 16:17
標題: [求助]為什么這個函數返回來的永遠是0x00

int    yunsuan2(unsigned int i)          //低位補1函數
{
    unsigned int j=0x00;
    for(;i>1;i--)
      {

        j=j>>1+0x80;〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗


      }
    return i=j;
}
/******************************************************/
int       yunsuan1(unsigned int i)            //高位補1函數
{
     unsigned int j=0x00;
     for(;i>1;i--)
     {
       j=j<<1+0x01;〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗

      }
     return i=j;

}

 

 

void main(void)
{
      unsigned int j=0;
      unsigned int i;
      while(1)
      {

 

       P0=0xff;

       for(j=1;j<=4;j++)
           {
              i=j;
              P0=(P0<<(j)+yunsuan1(i));//P0左移j個位,低位補1〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗
              Delay(500);
              P0=(P0>>(j)+yunsuan2(i));//p0右移j個位,高位補1〖位運算符的優先級比+,-低,這樣很容易看出錯誤的地方了〗

              Delay(500);
            }
       }

 

 }

程序的目的是要依次得到(0代表亮燈)

1111 1110

0111 1111

1111 1101

1011 1111

1111 1011

1101 1111

1111 0111

1110 1111

但下載到單片機里后出現燈亮的順序是這樣的

1111 1110

0111 1111

1111 1100

0011 1111

1111 1000

0001 1111

1111 0000

0000 1111

為什么會這樣!!??

原來是運算符的優先級搞錯了。

給一起學習的同學做個反面榜樣吧。

[此貼子已經被作者于2009-11-5 18:44:52編輯過]

作者: 校園踢踏舞    時間: 2009-11-6 11:17

加個()就可以解決問題了。

如:j=(j>>1)+0x80






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1