数组输出杂项

时间:2011-12-24 16:35:05

标签: c printf

#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!

为什么这是输出?任何人都可以解释其中的不同格式说明符吗?

1 个答案:

答案 0 :(得分:6)

对于任何数组T arr[N],表达式arr[i]等同于*(arr + i)

因为在后一个表达式中添加是可交换的,所以您也可以将其写为*(i + arr),因此将其写为i[arr]

特别是,arr[3]3[arr]表示同样的事情。

这是“你可以在C中做的奇怪有趣的事情”之一,但不应该说严肃的代码永远不应该真正使用这样的结构。