2012-10-05 148 views
0

所以我有一個for循環,其是這樣的:以下C代碼轉換爲什麼?

for(span=N>>1;span;span>>=1) 

我假設開始和結束條件等同於如下:

span = N>>1; //right shift N by 1 and initialize to span 
while(span!=0) 
{ 
span = span >> 1; 
} 

但是似乎在上下文有點匪夷所思我的代碼。提前致謝!

+6

看起來對我來說...... – Mysticial

+0

除非上下文被陳述;沒有人能夠幫助說出它是否古怪。但是,這樣的循環看起來對我來說很好 – vpram86

+0

Bilkul sahi hai bhai – Abhineet

回答

4

在每次迭代您除以2可變跨度,直到它達到0

因此,如果最初N = 8,則對於跨度值將被4,2,1,0 - >退出循環

0

這是正確的。

  • 的初始化設置span = N >> 1,右移1
  • 循環條件是span,這相當於span != 0ñ。
  • 每次環路惡有惡報,span是右移1

再次在正整數的情況下,這相當於for(span=N/2;span>0;span/=2)。但是,如果不知道你的具體情況,我不能評論這是否是奇怪的。

0

簡短而又甜美......只要你已經展示了代碼,你的解釋就會堅定和優秀。