求大神解答,关于内存解析以及类型转换的编译器底层实现,图中的结果请给我一个完整的解释,谢谢

#if 1
#include
using namespace std;

int main()
{
char str[] = "12345";
long pLong = (long)str;
pLong++;
printf("%d\n", pLong);
return 0;
}
#endif图片说明

这代码在我的编译器上没法编译

我修改了下

#include <stdio.h>

int main()
{
    char str[] = "12345";
    long *pLong = (long*)str;
    pLong++;
    printf("%d\n", (int)*pLong);
    return 0;
} 

结果是53。
内存是这样的(十进制)
49 50 51 52 53 0 0 0 0...
你pLong++,向后移动4字节。因为intel是小端处理器,所以是53

你要是输出指针,只知道它在堆栈上,但是这个就不好说了。