[英]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.