这个问题在这里已有答案:
我遇到了如下代码
#include <stdlib.h>
int main(){
char a[]="0123456789";
printf("%s\n",a+6[a]-2[a]);
return 0;
}
产量
456789
如何在printf中计算a + 6 [a] -2 [a]?
为什么在printf中只给出6 [a]不起作用?
printf("%s\n",6[a]);
嗯,这样的陈述
a+6[a]-2[a]
可以重写为
&(a[ a[6] - a[2] ])
这很简单,
a[6]
(type,int
)的值作为索引a[2]
(类型int
)的值作为RHS。结果是一个指针,作为printf()
转换规范的参数传递给%s
。