数组输出杂项 #包括 int main() { INTA=3,b=6; printf(&a[“嗨!你好!%s\n”],&b[“Mnnit/Softathalon”]); printf(&a[“什么%c%c%c%c%c!\n”]、1[“这个”], 2[“美丽”]、0[“工具”]、0[“是”]、3[“敏感”]、4[“中交”]; 返回0; }

数组输出杂项 #包括 int main() { INTA=3,b=6; printf(&a[“嗨!你好!%s\n”],&b[“Mnnit/Softathalon”]); printf(&a[“什么%c%c%c%c%c!\n”]、1[“这个”], 2[“美丽”]、0[“工具”]、0[“是”]、3[“敏感”]、4[“中交”]; 返回0; },c,printf,C,Printf,输出: 你好!!软塔萨隆 那是C 为什么这是输出?有人能解释其中的不同格式说明符吗?对于任何数组T arr[N],表达式arr[i]相当于*(arr+i) 因为加法在后一个表达式中是可交换的,所以您也可以将其写成*(i+arr),从而写成i[arr] 特别是,arr[3]和3[arr]表示相同的事情 这是一个“在C中可以做的有趣的事情”,但不用说,严肃的代码不应该实际使用这种结构。对于任何数组tarr[N],表达式arr[i]相当于*(arr+i) 因为加法在后一个表达式中是可交换的,所以您也可

输出:

你好!!软塔萨隆

那是C


为什么这是输出?有人能解释其中的不同格式说明符吗?

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

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

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


这是一个“在C中可以做的有趣的事情”,但不用说,严肃的代码不应该实际使用这种结构。

对于任何数组
tarr[N]
,表达式
arr[i]
相当于
*(arr+i)

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

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


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

就像。。。为什么
a[i]
i[a]
相同?或者与
4[str]
相同的
4[str]
?比如。。。为什么
a[i]
i[a]
相同?或者
str[4]
4[str]
相同?
#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;
}