#请大佬帮助!
###这样一个程序,然后它输出是越过了四个然后输出。为什么呢?
#include<stdio.h>
int main()
{
char *p="abcdefgh",*r;
long *q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
return 0;
}
希望有大佬可以回答一下。本人初学c,还不大清楚
这类型转换还可以这样玩的。
因为c语言并没有类型检查和下标越界的检查,所以的确可以这么写,不同的编译器long有几位不一定。
如果是4位,那么它可以得到e,否则得到\0,不同编译器结果不同。