我遇到了一个代码,如下所示
#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]);
答案 0 :(得分:1)
嗯,像
这样的陈述 a+6[a]-2[a]
可以重写为
&(a[ a[6] - a[2] ])
简单地说,
a[6]
(type,int
)的值作为第一种情况下的索引a[2]
(类型int
)的值作为RHS。结果是指针,作为printf()
转换规范的参数传递给%s
。