2011-12-24 12 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

Like ...なぜ[a [i]は 'i [a]'と同じですか?または 'str [4]'は '4 [str]'と同じですか? –

答えて

6

任意の配列T arr[N]の場合、arr[i]*(arr + i)に相当します。

後者の式では加算が可換であるため、*(i + arr)と書くことができ、したがってi[arr]と書くことができます。

特に、arr[3]3[arr]は同じものを示します。

「Cで奇妙な面白いことをしている」のですが、深刻なコードでは実際にこのような構造を使用するべきではありません。

関連する問題