ปรัชญา แค้วคำมูล 2016-01-25 10:01 采纳率: 6.3%
浏览 1562
已采纳

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

#if 1
#include
using namespace std;

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

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-01-25 11:49
    关注

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

    我修改了下

    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?