2011-12-24 129 views
1
#include <stdio.h> 
int main() 
{ 
int a=3, b = 6; 
printf(&a["Hi!Hello! %s\n"], &b["Mnnit/Softathalon"]); 
printf(&a["WHAT%c%c%c %c%c %c !\n"], 1["this"], 
2["beauty"],0["tool"],0["is"],3["sensitive"],4["CCCCCC"]); 
return 0; 
} 

輸出:陣列輸出雜

您好! Softathalon

那就是C!

爲什麼這是輸出?任何人都可以解釋其中的不同格式說明符?

+0

贊...爲什麼'a [i]'與'我[a]'相同?或者'str [4]'與'4 [str]'相同? – 2011-12-24 16:37:17

回答

6

對於任何陣列T arr[N],表達arr[i]相當於*(arr + i)

由於加法在後面的表達式中是可交換的,所以您也可以將其寫爲*(i + arr),因此可以寫爲i[arr]

特別是,arr[3]3[arr]表示相同的東西。

它是那些「你可以在C中做的奇怪有趣的事情」之一,但不言而喻,嚴肅的代碼應該永遠不會實際使用這樣的構造。