簡體   English   中英

誰能解釋一下這個特定的print語句在for循環中做了什么?

[英]Can anyone explain me what does this particular print statement do in for loop?

int a[] = { 1, 2, 3, 4, 5 };
const int N = sizeof(a)/sizeof(a[0]);
cout<<N<<endl;

for (int i = 0; i < N; ++i)
{
    cout << (i[a-i]%N)[a+i-1] << " ";
}

//它打印1 2 3 4 5,即我不理解的數組是cout <<(i [ai]%N)[a + i-1] <<“”;

這是CBCPAT,令人困惑但正確的指針算術技巧。

由於C ++(和C)中的數組預訂是使用指針算法完成的,如果a是數組而i是索引(整數),那么

a[i]

相當於

*(a + i)

因為加法是可交換的,所以這是相同的

*(i + a)

反過來可以寫成

i[a]

即你是用數組索引整數(WTH?)。

在了解了這一點后,您可以輕松地重寫代碼以了解它的作用:它等同於

(a + i - 1)[(a - i)[i] % N]

這只是

(a + i - 1)[1 % N]

反過來

(a + i - 1)[1 % 5],

那是

*(a + i - 1 + 1)

是的

a[i]

瞧。 搞抄寫這個廢話的程序員。

暫無
暫無

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

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