所以我有一個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;
}
但是似乎在上下文有點匪夷所思我的代碼。提前致謝!
所以我有一個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;
}
但是似乎在上下文有點匪夷所思我的代碼。提前致謝!
在每次迭代您除以2可變跨度,直到它達到0
因此,如果最初N = 8,則對於跨度值將被4,2,1,0 - >退出循環
這是正確的。
span = N >> 1
,右移1span
,這相當於span != 0
ñ。span
是右移1再次在正整數的情況下,這相當於for(span=N/2;span>0;span/=2)
。但是,如果不知道你的具體情況,我不能評論這是否是奇怪的。
簡短而又甜美......只要你已經展示了代碼,你的解釋就會堅定和優秀。
看起來對我來說...... – Mysticial
除非上下文被陳述;沒有人能夠幫助說出它是否古怪。但是,這樣的循環看起來對我來說很好 – vpram86
Bilkul sahi hai bhai – Abhineet