#include<stdio.h>
#include<string.h>
int main()
{
char c[]="HELLO2014";
char *p;
printf("%s\n",p+p[3]-p[1]);
return 0;
}
C中的上述代码在Answer中输出14。请解释这个怎么样?
答案 0 :(得分:3)
这是一个技巧。
首先,您的代码段缺少一条语句,您应该添加char *p = c
;或直接在c
中使用printf
。
p[3]-p[1]
这些是字符L和E,对应于ASCII代码中的76和69。
所以你的printf
变成了
printf("%s\n",p + 7 );
将char数组移动7,从而14