这个C语言题怎么解释啊

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:46:23
#include "stdio.h"
main()
{char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
就是这道题为什么结果是efgh,特别是那两行q=(long*)p和r=(char*)q是什么意思,是强制转换吗为什么转换之后前面的字母就没有了,迷茫中乞求高手指点一下...

是强制转换,long占4个字节,char占一个字节,转换为long的指针后q就指向d了,q++,就指向e了
而再把其转换为char的指针后,因为char的空间比long的小,因为位置不会发生变化
输出自然就是efgh了

在DOS里就知了