ปรัชญา แค้วคำมูล 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条)

报告相同问题?

悬赏问题

  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败