簡體   English   中英

以下C代碼轉換為什么?

[英]what does the following C code translate to?

所以我有一個for循環,如下所示:

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,則span的值將為4,2,1,0->退出循環

那是對的。

  • 初始化程序設置span = N >> 1 ,將N右移1。
  • 循環條件是span ,它等於span != 0
  • 每次循環出現時, span再次右移1。

在正整數的上下文中,這等效於for(span=N/2;span>0;span/=2) 但是,在不知道您的特定上下文的情況下,我無法評論這是不是奇怪。

簡短而甜美...是的,只要您已經展示了代碼,您的解釋就堅定而良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM